Django与Mongodb listfield不相关 [英] Django-Nonrel with Mongodb listfield

查看:163
本文介绍了Django与Mongodb listfield不相关的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在mongodb上的django-nonrel中实现manytomany字段关系。这是建议的:



ListField的Django-nonrel表单域



遵循接受的答案



models.py

  class MyClass(models.Model):
field = ListField(models.ForeignKey(AnotherClass))

我不知道以下哪里,它已经在fields.py,widgets,py,models.py

  class ModelListField(ListField):
def formfield(self,** kwargs):
return FormListField (** kwargs)

class ListFieldWidget(SelectMultiple):
pass

class FormListField(MultipleChoiceField):

This是一个自定义表单字段,可以显示一个ModelListField作为多选择GUI元素

widget = ListFieldWidget

def clean(self,value):
#TODO:清理你的数据以往的方式是正确的,在你的情况下,并返回清理的数据,而不是只是值
返回值

admin.py

  class MyClassAdmin(admin.ModelAdmin):
form = MyClassForm

def __init __(self,model,admin_site):
super(MyClassAdmin,self).__ init __(model,admin_site)

admin.site.register(MyClass,MyClassAdmin)

以下错误不断弹出:



如果中间model.py中使用自定义类代码

 名称'SelectMultiple'未定义

如果自定义类代码被取消models.py:

 没有为< class'djangotoolbox.fields.ListField'实现的表单字段> 


解决方案

你只需要通过它的声音导入SelectMultiple 。您可以将代码放在这三个文件中的任何一个文件中,fields.py是有意义的。



由于它很常见:

 从django导入表单

你可能只想编辑下面的代码:

 #你必须弄清楚如何为自己导入Mongo ListField :) 
class ModelListField(ListField):
def formfield(self,** kwargs):
return FormListField(** kwargs)

class ListFieldWidget(forms.SelectMultiple):
pass

class FormListField(forms.MultipleChoiceField):

这是一个自定义窗体字段,可以显示一个ModelListField作为多选择GUI元素

widget = ListFieldWidget

def clean(self,value):
#TODO:清理你的数据无论你的情况如何,在任何方式都是正确的,并返回清理的数据,而不是仅仅
的返回值

您可能还想尝试更多地了解python如何工作,如何导入模块等。


I am trying to implement manytomany field relation in django-nonrel on mongodb. It was suggessted at to:

Django-nonrel form field for ListField

Following the accepted answer

models.py

class MyClass(models.Model):
    field = ListField(models.ForeignKey(AnotherClass))

i am not sure where the following goes, it has been tested in fields.py, widgets,py, models.py

class ModelListField(ListField):
    def formfield(self, **kwargs):
    return FormListField(**kwargs)

class ListFieldWidget(SelectMultiple):
    pass

class FormListField(MultipleChoiceField):
    """
    This is a custom form field that can display a ModelListField as a Multiple Select GUI element.
    """
    widget = ListFieldWidget

    def clean(self, value):
    #TODO: clean your data in whatever way is correct in your case and return cleaned data instead of just the value
    return value

admin.py

class MyClassAdmin(admin.ModelAdmin):
    form = MyClassForm

    def __init__(self, model, admin_site):
    super(MyClassAdmin,self).__init__(model, admin_site)

admin.site.register(MyClass, MyClassAdmin)

The following Errors keep popping up:

If the middle custom class code is used in models.py

name 'SelectMultiple' is not defined

If custom class code is taken off models.py:

No form field implemented for <class 'djangotoolbox.fields.ListField'>

解决方案

You just need to import SelectMultiple by the sound of it. You can put the code in any of those three files, fields.py would make sense.

Since it's pretty usual to have:

from django import forms

at the top of your file already, you probably just want to edit the code below to:

# you'll have to work out how to import the Mongo ListField for yourself :)
class ModelListField(ListField):
    def formfield(self, **kwargs):
    return FormListField(**kwargs)

class ListFieldWidget(forms.SelectMultiple):
    pass

class FormListField(forms.MultipleChoiceField):
    """
    This is a custom form field that can display a ModelListField as a Multiple Select GUI element.
    """
    widget = ListFieldWidget

    def clean(self, value):
    #TODO: clean your data in whatever way is correct in your case and return cleaned data instead of just the value
    return value

You probably also want to try and learn a bit more about how python works, how to import modules etc.

这篇关于Django与Mongodb listfield不相关的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆