2016-04-16 8 views
0

これは私のモデルであるベースにModelChoiceFieldを保存しない:Djangoは

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 

これが私の見解です:

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}) 

は、これが私の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') 

私の問題はあるがModelChoiceFieldから選択された値は空のフィールドだけを値なしで保存しています。その問題を解決するのに手伝ってもらえますか?

私の問題はModelChoiceFieldから選択した値が値だけで空のフィールドなし ベースに保存されていることです。 問題を解決するのに手伝ってもらえますか?

答えて

1

モデルフィールドはPost.userですが、フォームフィールドPostForm.selectuserです。 PostFormuserを入力してください。

class PostForm(forms.ModelForm): 
    user = forms.ModelChoiceField(queryset=User.objects.all()) 
    ... 
+0

また、フォームのメタクラスの 'fields'タプルにも含めます。 –

+0

それはとても簡単でした!助けてくれてありがとう! – Soltys