Unsolved
1 Message
0
4777
November 26th, 2020 05:00
Field 'id' expected a number but got '-'
I'm basically new to the Django and got such ValueError. I have a basic user model inheriting from AbstractUser class. Also I have Profile model (in separate app), which also contain OneToOneField refering to my User model. First of all, lets take a look on my Profile model: class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile') country = models.ForeignKey('Country', on_delete=models.SET_DEFAULT, default='-') full_name = models.CharField(max_length=32, default='-') about = models.TextField(max_length=1000, default="User don't set any information about") register_date = models.DateField(auto_now=True) image = models.ImageField(upload_to='images/', default='images/no_avatar.png') active = models.BooleanField(default=False) website = models.URLField(default='-') github = models.URLField(default='-') twitter = models.URLField(default='-') instagram = models.URLField(default='-') facebook = models.URLField(default='-') Secondly when I create a new User I have to also create his own profile (model instance refering to the user instance). Let's look on my view.py where I creating a new user. class SignupView(View): def get(self, request): """ :param request: :return: Register page """ return render(request, "login/register.html", { 'form': SignupForm() }) def post(self, request): """ Tests data validity,creating user if everything is ok. :param request: :return: Particular user page if data is valid, otherwise it will return couple of mistake messages """ form = SignupForm(request.POST) if form.is_valid(): username = form.cleaned_data['username'] email = form.cleaned_data['email'] password1 = form.cleaned_data['password'] password2 = form.cleaned_data['confirm_password'] if password1 == password2: try: user = User.objects.create_user(username=username, email=email, password=password1) profile = Profile.objects.create(user=user) user.save() profile.save() return HttpResponseRedirect(reverse('myprofile:index', args=(user.id, ))) except IntegrityError: return render(request, 'login/register.html', { 'message': 'Username is already taken', 'form': form }) else: return render(request, 'login/register.html', { 'message': 'Passwords must match', 'form': form }) return render(request, 'login/register.html', { 'form': form }) I left the whole class based view but you likely need to check post function out. And this is where the problem begins. I getting an error on "profile = Profile.objects.create(user=user)" line. On this moment Django stopping an execution and raising an ValueError with "Field 'id' expected a number but got '-'. ". What I already have tried? Remove a database and also remove migrations by "python3 manage.py migrate app zero --fake" and then reapplying migrations to a new database. So I don't probably think this is a problem with migration (not sure). But what did I miss? I will be very grateful for any help.