里纳迪奥斯的Crispyforms不显示我的模型s

2024-04-20 00:20:46 发布

您现在位置:Python中文网/ 问答频道 /正文

很奇怪,我有一个模型有一个Charfield,它有一些可能的值

class Entry(models.Model):
    title = models.CharField(
        max_length=100,
        blank=True,
        null=True,
        help_text="We will refer to your entry by this title.")
    production_type = models.CharField(
        blank=False,
        null=True,
        max_length=32,
        default=None,
        choices=  (('Agency', 'Agency'),('Brand', 'Brand'),))

当我呈现一个简单的模型表单

^{pr2}$

它将呈现一个下拉列表,其中包含所选的正确状态。如果我像下面这样添加InlineRadios小部件,那么在呈现时,单选按钮不会拾取模型状态。我总是第一选择。表格提交得很好。在

class EntryForm(forms.ModelForm):
    class Meta:
        model = Entry
        fields = [
            'title', 'production_type'
        ]
    def __init__(self, request, *args, **kwargs):
        self.helper = FormHelper()
        self.helper.layout = Layout(
            'title',
             InlineRadios('production_type', css_class='production_type_holder')
        )

有什么方法可以让同时内联单选按钮行为并跟踪我的模型状态吗?在


Tags: 模型selftruetitlemodels状态typenull
2条回答

可能会出现一些错误:

  1. EntryForm具有model = Entry行,而必须是model = Payment,正如您所描述的模型Payment
  2. EntryForm.__init__缺少行super(EntryForm, self).__init__(*args, **kwargs)
  3. 您的__init__声明包含多余的(?)参数requestso声明必须是

    def __init__(self, *args, **kwargs): #without request
    

请尝试此更改。在

你的代码(在我的版本,下面)可以正常工作,单选按钮的正常行为,它通常创建新的支付和打印现有的。在

在模型.py没有变化

在表单.py在

^{pr2}$

在视图.py在

from django.views.generic.edit import CreateView


# it creates new payment 
class PaymentCreate(CreateView):
    model = Payment
    form_class= EntryForm
    template_name='payment_form.html'
    success_url = '/payment/'

# this usual view just print form with already created instance
def PaymentView (request):
    form =  EntryForm(instance = Payment.objects.get(id=4))
    c = {'form': form}
    return render(request,'payment_form.html', c)

付款_表单.html在

{% load crispy_forms_tags %}
<html>
<head>
</head>
<body>

    {% csrf_token %}
    {% crispy form %}

</body>
</html>

在网址.py公司名称:

...
#i made 2 views, one for 'usual' view, one for generic view
url(r'payment_view/', PaymentView), 
url(r'payment/', PaymentCreate.as_view()),
...

原来是虚惊一场。我的设计师从根本上改变了css,打破了简单的表单。我以为我已经隔离了这些更改,但是一旦我删除了所有应用程序生成的CSS,一切都很好。抱歉误报了。在

相关问题 更多 >