【问题标题】:Django Forms, fields and modelsDjango 表单、字段和模型
【发布时间】:2013-08-27 19:11:44
【问题描述】:

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

#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

【问题讨论】:

    标签: django django-models django-forms django-users


    【解决方案1】:

    您可以通过创建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 字段。

    【讨论】:

      猜你喜欢
      • 2020-11-30
      • 2010-12-11
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      • 2012-12-11
      • 2020-03-30
      相关资源
      最近更新 更多