我遇到了问题而且我无法找到解决方案。我有下一堂课
#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')
我有一些更完整但是这段代码足以解释我的怀疑。我需要使用两个参数(article,request.user)创建此表单,文章必须通过隐藏字段保持关联。 当请求用户登录时,名称必须等于(request.user.first_name +“”+ request.user.last_name)并在用户中保存登录用户的id。用户登录时必须只显示内容。
我的第二个疑问是,如果此字段不是
形式,我将如何填写实例dataX答案 0 :(得分: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
且不使用)或在模板中添加{% if user.is_authenticated %}
语句,以便在呈现HTML时跳过name
字段形式。