我有一个带内联表单的Django管理表单,如下所示。它有很多领域。模型Place
有photos = models.ManyToManyField(Photo)
,而Photo
是另一个Django模型。
问题在于我有Photo
的实例太多,单击我在Django admin下编辑表单,我得到了一个带有所有Photo实例选择的下拉列表。
如何限制仅与Place
有关系的选择?
class Photoinline(admin.TabularInline):
model = Place.photos.through
extra = 1
readonly_fields = ('preview','my_order',)
def preview(self,obj):
if obj.photo:
id = obj.photo_id
photo = Photo.objects.get(id=id)
return mark_safe('<img src="/media/%s" width="150" />' % (photo.photo))
else:
return mark_safe('Empty,please upload an image')
def my_order(self,obj):
id = obj.photo_id
photo = Photo.objects.get(id=id)
if not photo.order:
return ""
return photo.order
class PlaceAdmin(admin.ModelAdmin):
list_display = ('name','city','state','country')
exclude = ('photos',)
formfield_overrides = {
models.ForeignKey: {'widget': Select(attrs={'style':'width: 350px;'})},models.FloatField: {'widget': Select(attrs={'style':'min-width: 350px;'})},models.URLField: {'widget': TextInput(attrs={'style':'width: 350px;'})},models.CharField: {'widget': TextInput(attrs={'style':'width: 350px;'})},models.TextField: {'widget': Textarea(attrs={'style':'width: 350px;height: 38px;'})}
}
inlines = [
Photoinline,]