3

例如我有一个这样的模型:

class Wheel(models.Model):
    wheel = models.CharField(max_length=20)

class Vehicle(models.Model):
    wheel = models.ForeignKey(Wheel)

当我制造一辆新车辆时,我希望绿色加号出现在我的车轮字段旁边,并允许我添加新的车轮实例。我对 django 很陌生,所以我不知道这是否可能。任何帮助表示赞赏!

4

3 回答 3

5

如果您在管理部分之外实现您的表单,您将需要一个类似于 django.contrib.admin.widgets.RelatedFieldWidgetWrapper 的自定义小部件包装器。用法示例:

from .models import Owner
from .widgets import AddAnotherWidgetWrapper   # our custom widget wrapper

class PickOwnerForm(forms.Form):
    owner = forms.ModelChoiceField(
    queryset=Owner.objects.all().order_by('name'),
    widget=AddAnotherWidgetWrapper(forms.Select(),Owner, )
)

在您的实现中,将“所有者”替换为您链接到的模型。

您可以在https://gist.github.com/ebrelsford/5263306找到自定义小部件包装器以及完整示例

于 2013-08-21T20:38:02.440 回答
2

检查小部件django.contrib.admin.widgets.RelatedFieldWidgetWrapper。这是 Django Admin 用来添加功能性“+”标记的小部件,在这里
为了在您的自定义表单中使用小部件,您需要提供为admin_siteWheel 添加页面提供服务的参数。

于 2012-06-27T05:20:17.277 回答
0

默认情况下,只有具有“editable=True”的字段才会添加到管理页面:

ModelAdmin.fields

模型.py

class Wheel(models.Model):
    wheel = models.CharField(max_length=20, editable=True)

class Vehicle(models.Model):
    wheel = models.ForeignKey(Wheel, editable=True)
于 2012-06-27T03:12:25.847 回答