Django如何显示下拉值而不是对象?

2024-10-03 21:26:16 发布

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

它的值好像不能下降。在

enter image description here

在表单.html在

{% extends "base.html" %}
{% load i18n %}

{% block content %}
<form method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Submit" />
</form>
{% endblock %}

在模型.py在

^{pr2}$

在视图.py在

class AutoresponderForm(ModelForm):
    class Meta:
        model = Campaign
        fields = ['campaign_name','facebook_account_to_use','set_auto_reply_for_fan_page','message_list_to_use','reply_only_for_this_keyword']
        exclude = ('user',)

def autoresponder_create(request, template_name='form.html'):
    form = AutoresponderForm(request.POST or None)
    if form.is_valid():
        form = form.save(commit=False)
        form.user = request.user
        form.save()
        return redirect('autoresponder_list')
    return render(request, template_name, {'form':form})

Tags: tonamepyformforuserequesthtml
2条回答

更新您的模型.py像这样:

class Campaign(models.Model):
  user = models.ForeignKey(User)
  campaign_name = models.CharField(max_length=50)
  autoresponder_type = (
      ('Send replies to inbox messages','Send replies to inbox
       messages'),
      ('Post replies to users comments','Post replies to users comments'),
      )
  facebook_account_to_use = models.ForeignKey(FacebookAccount)
  set_auto_reply_for_fan_page = models.ForeignKey(FacebookFanPage)
  message_list_to_use = models.ForeignKey(PredefinedMessage)
  reply_only_for_this_keyword = models.CharField(max_length=50)

  def __unicode__(self):
    return self.campaign_name  # or you can use any string value instead of campaign_name

您应该在对象的模型中实现__str__(如果是python2,__unicode__)。在

来自Django的docs

Django uses str(obj) in a number of places. Most notably, to display an object in the Django admin site and as the value inserted into a template when it displays an object. Thus, you should always return a nice, human-readable representation of the model from the str() method.

相关问题 更多 >