2014-09-24 72 views
0

在我的Django項目中,我製作了一個表單來創建模型。發送表單/創建模型時,我想在'作者'字段中引用當前用戶。 我遇到了一些麻煩。Django - 'Created by'字段

author = forms.ModelChoiceField(queryset=User.objects.all()) 

我只想讓模型的創建者保存在此字段中。那可能嗎?

+0

讓我看看你的模型。你應該在那裏字段'author = models.OneToOneField(User,related_name ='authors')'。當你在ModelForm中有這個..你將不需要ModelChoiceField。 – 2014-09-24 12:01:35

+0

嗯,有一個ForeignKey,把它改爲OneToOneField,還沒有知道。那我需要什麼? – Dominic 2014-09-24 12:06:35

+0

做了一個非常骯髒的JS解決方案。在隱藏字段中寫入用戶標識,並將Option-Field的值設置爲用戶標識。作品! – Dominic 2014-09-24 12:49:05

回答

2

這是模型應該是什麼樣子:

class Book(models.Model): 
    name = models.CharField(max_length=100) 
    author = models.ForeignKey(settings.AUTH_USER_MODEL) 

一些形式:

class BookForm(ModelForm): 
    class Meta: 
     model = Book 
     fields = ['name'] 

最後的觀點,這使得它發生。

class BookView(FormView): 
    form_class = BookForm 

    def form_valid(self, form): 
     book = form.save(commit=False) 
     book.author = self.request.user 
     book.save() 

但請記住確保有登錄的用戶。