的repr我有一个django来自我的开发环境,但不是我的生产环境。
如果我调试我的开发环境,我会注意到此警告显示在表单的__init__
函数中:
self: Unable to get repr for <class 'badges.forms.BadgeAssertionForm'> args <class 'tuple': (None,) kwargs: {'initial': {'badge': <Badge: Test Badge>}}
forms.py
class BadgeAssertionForm(forms.ModelForm):
class Meta:
model = BadgeAssertion
# fields = '__all__'
exclude = ['ordinal', 'issued_by', 'semester']
def __init__(self, *args, **kwds):
super(BadgeAssertionForm, self).__init__(*args, **kwds)
self.fields['user'].queryset = User.objects.order_by('profile__first_name', 'username')
self.fields['user'].label_from_instance = lambda obj: "%s (%s)" % (obj.profile, obj.username)
表单在views.py中创建:
def assertion_create(request, user_id, badge_id):
# view can accept a user_id or badge_id, otherwise they will be 0
initial = {}
if int(user_id) > 0:
user = get_object_or_404(User, pk=user_id)
initial['user'] = user
if int(badge_id) > 0:
badge = get_object_or_404(Badge, pk=badge_id)
initial['badge'] = badge
form = BadgeAssertionForm(request.POST or None, initial=initial)
其他答案我已经看到所有人建议在课堂上添加__str__
功能,但是,我以前从未见过需要__str__
的ModelForm?此外,当我添加一个错误仍然出现。
我的生产环境中的问题是User
字段根本不会出现在表单中。只是徽章领域。
这里是models.py
中的BadgeAssertionclass BadgeAssertion(models.Model):
badge = models.ForeignKey(Badge)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
#... some other fields.
编辑:我认为当我将Django升级到1.11(从1.9?)时停止工作,但我并不乐观。