0

我有一个问题,我无法找到解决方案。我有下一堂课

#models.py
from django import models

class Suggest(models.Model):
    user    = models.ForeignKey(User, null= True, blank=True)
    article = models.ForeignKey(Article)
    name    = models.ChardField(max_length=100)
    types   = ( ('suggest','Sugest'),('note','Note'),('complain','Complain'))
    type    = models.CharField(max_length=80, choices = types, default='suggest')
    content = models.TextField()
    dataX   = models.CharField(max_length=200) #example

#forms.py
from django import form
from .models import Suggest

class SuggestForm(form.ModelForm): #File forms.py,
    class Meta:
       fields = ('name','type','content')

我有一些更完整的,但这段代码足以解释我的疑虑。我需要使用两个参数(文章,request.user)创建此表单,文章必须通过隐藏字段保持关联。请求用户登录时,in name 必须等于 (request.user.first_name+" "+request.user.last_name) 并在 user 中保存登录用户的 id。用户登录时必须只显示内容。

我的第二个疑问是如果该字段不在表单中,我如何完成例如 dataX

4

1 回答 1

0

您可以通过创建模型的空实例来设置用户Suggest

def some_view(request, ...):
    suggest = Suggest()
    initial = {}
    if request.user.is_authenticated():
        suggest.user = request.user
        initial['name'] = request.user.get_full_name()

    form = SuggestForm(..., instance=suggest, initial=initial)

    if request.method == 'POST' and form.is_valid():
        form.save()
    ...

仅显示部分字段 您可以使用两个单独的表单(有name和没有)或在模板中添加一个语句以在呈现表单的 HTML 时{% if user.is_authenticated %}跳过该字段。name

于 2013-08-26T18:41:28.917 回答