Reputation: 1
This is my model:
class User(models.Model):
name = models.CharField(max_length=50)
mail = models.CharField(max_length=50)
nickname = models.CharField(max_length=50)
def __str__ (self):
return self.name
class Post(models.Model):
title = models.CharField(max_length=200)
lead = models.CharField(max_length=10, default='default')
text = models.TextField()
created_date = models.DateTimeField(
default=timezone.now)
published_date = models.DateTimeField(
blank=True, null=True)
user = models.ForeignKey(User, related_name="User", null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
This is my view:
def post_new(request):
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.published_date = timezone.now()
post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm()
return render(request, 'post_new.html', {'form': form})
This is my forms.py:
class PostForm(forms.ModelForm):
selectuser = forms.ModelChoiceField(queryset=User.objects.all())
class Meta:
model = Post
fields = ('title','lead', 'text',)
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ('name','nickname','mail')
My problem is that selected value from ModelChoiceField is saving to base without value just empty field. Can u help me resolve that problem?
My problem is that selected value from ModelChoiceField is saving to base without value just empty field. Can u help me resolve that problem?
Upvotes: 0
Views: 774
Reputation: 308829
The model field is Post.user
, but your form field PostForm.selectuser
. Try using user
in the PostForm
.
class PostForm(forms.ModelForm):
user = forms.ModelChoiceField(queryset=User.objects.all())
...
Upvotes: 1