Django-nonrel在admin中使用包含EmbeddedObjects的ListField

时间:2012-01-18 11:35:05

标签: django mongodb django-nonrel

我一直在努力让这个工作变得无能为力。

我有一个包含EmbeddedObjects的ListField的模型,基本上它是拍卖中的一个项目,其中包含一个投标列表。 Typycal MongoDB方法。

我知道ListField没有显示在admin中,因为它不知道要显示什么Widget,它可能是任何内容的列表。这是有道理的。

我在我的app文件夹和子类ListField中创建了一个fields.py,现在我在models.py中使用它了

我的问题是:

  • 我如何继续从这一点开始,直到在我的管理页面上的项目部分下面的小部件,我可以为所选项目添加出价?

这是我的model.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)

在我的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?')

1 个答案:

答案 0 :(得分:1)

试试这个?

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