Django Nonl使用包含admin中嵌入对象的ListField

Django Nonl使用包含admin中嵌入对象的ListField,django,mongodb,django-nonrel,Django,Mongodb,Django Nonrel,我一直在毫无希望地试图让它发挥作用 我有一个包含嵌入对象列表字段的模型,基本上它是拍卖中的一个项目,其中包含一个出价列表。典型的MongoDB方法 我知道ListField不会显示在管理员中,因为它不知道要显示什么小部件,它可能是任何东西的列表。这是有道理的 我已经在我的应用文件夹中创建了一个fields.py,并将其子类ListField,现在我正在models.py中使用它 我的问题是: 如何从这一点开始,直到在我的管理页面的项目部分下获得一个小部件,在那里我可以向所选项目添加出价 这是

我一直在毫无希望地试图让它发挥作用

我有一个包含嵌入对象列表字段的模型,基本上它是拍卖中的一个项目,其中包含一个出价列表。典型的MongoDB方法

我知道ListField不会显示在管理员中,因为它不知道要显示什么小部件,它可能是任何东西的列表。这是有道理的

我已经在我的应用文件夹中创建了一个fields.py,并将其子类ListField,现在我正在models.py中使用它

我的问题是:

  • 如何从这一点开始,直到在我的管理页面的项目部分下获得一个小部件,在那里我可以向所选项目添加出价
这是我的模特

from django.db import models
from djangotoolbox.fields import ListField
from djangotoolbox.fields import EmbeddedModelField
from ebay_clone1.fields import BidsListField

class User(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField(max_length=75)
    def __unicode__(self):
        return self.name

class Item(models.Model):
    seller = models.ForeignKey(User, null=True, blank=True)
    title = models.CharField(max_length=100)
    text = models.TextField()
    price = models.FloatField()
    dated = models.DateTimeField(auto_now=True)
    num_bids = models.IntegerField()
    bids = BidsListField(EmbeddedModelField('Bid'))
    item_type = models.CharField(max_length=100)
    def __unicode__(self):
        return self.title


class Bid(models.Model):
    date_time = models.DateTimeField(auto_now=True)
    value = models.FloatField()
    bidder = models.ForeignKey(User, null=True, blank=True)
在my fields.py中,我有:

from django.db import models
from djangotoolbox.fields import ListField
from djangotoolbox.fields import EmbeddedModelField
from django import forms

class BidsListField(ListField):
    def formfield(self, **kwargs):
        return None

class BidListFormField(forms.Field):
    def to_python(self, value):
        if value in validators.EMPTY_VALUES:
            return None
        return value

    def validate(self,value):
        if value == '':
            raise ValidationError('Empty Item String?')
试试这个

class BidsListField(ListField):
    def formfield(self, **kwargs):
        return BidListFormField(**kwargs)

这不应该已经起作用了吗?代码看起来很完美。我在你的帖子里没有看到任何问题:-)乔纳斯非常感谢你的帮助,伙计!代码看起来不错,但我知道我需要以某种方式对forms.Field进行子类化,这样我就可以告诉Django要为我的嵌入式投标列表显示什么样的表单/小部件。