gpt4 book ai didi

python - Django - 管理站点中 OneToOne 字段的内联表单

转载 作者:太空狗 更新时间:2023-10-29 22:11:15 28 4
gpt4 key购买 nike

您好 这个问题已被问过很多次,但不幸的是我找不到真正有效的答案。以下是我的模型:

class Person(models.Model):
name = models.CharField(max_length=100)
...

class Address(models.Model):
person = models.OneToOneField(Person)
...

然后在管理员中我有:

class AddressInline(admin.StackedInline):
model = Address


class PersonAdmin(admin.ModelAdmin):
inlines = (AddressInline)

admin.site.register(Person, PersonAdmin)

然后我得到了这个臭名昭著的错误:

<class 'address.models.Address'> has no ForeignKey to <class 'person.models.Person'>

我试过:

  • django-反向管理。不幸的是没有与 Django 1.6 一起工作,而且我不够聪明,无法让它与 1.6 一起工作
  • stackover flow 中关于使用代理模型和抽象基类的一些建议也没有用。

如果有人能帮助我找到解决方法,我将不胜感激。

最佳答案

我还没有尝试过,但这个要点似乎是基于 django-reverse-admin 中的代码,但已更新为适用于 Django 1.6:

https://gist.github.com/mzbyszewska/8b6afc312b024832aa85

请注意,这部分示例代码是错误的:

class AddressForm(models.Form):
pass

...您需要在顶部from django import forms 然后执行如下操作:

class AddressForm(forms.ModelForm):
class Meta:
model = Address

这里的示例代码第 46 行还有另一个问题:

inline_reverse = ('business_addr', ('home_addr', AddressForm), ('other_addr' (
'form': OtherForm
'exclude': ()
)))

应该是:

inline_reverse = ('business_addr', ('home_addr', AddressForm), ('other_addr', {
'form': OtherForm,
'exclude': ()
}))

请注意,它向您展示了指定内联模型的三种不同方式...第一种仅通过字段名称 'business_addr' 即,如果您不需要内联模型的自定义表单.

关于python - Django - 管理站点中 OneToOne 字段的内联表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24623457/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com