我有一个泛型函数,可以迭代给定对象的_meta.fields。除ManyToMany字段外,所有字段名称和值都被正确获取。它似乎完全忽略了ManyToMany字段。我们如何从m2m字段中检索fks?
def myfunc(self)
for field in self._meta.fields:
type = field.get_internal_type()
name = field.name
val = getattr(self,field.name)
我使用get_fields()生成所有模型字段名称和值的字典: def get_model_fields(self, obj, fields):
model_fields = {}
for f in self.model._meta.get_fields(include_hidden=True):
value = getattr(obj, f.name)
model_fields.append({
'label': f.verbose_name
我能够制作只读模型序列化程序,例如:
class FooSerializer(serializers.ModelSerializer):
class Meta:
model = Foo
fields = ['name', 'ratio']
read_only_fields = fields
但是,我倾向于经常将字段添加/移除到/从Foo中删除。每次修改Foo时,不更新我的序列化程序会容易得多。fields = '__all__'非常方便:
class FooSerializer(serial
我有下一个序列化程序:
class AddressSerializer(serializers.ModelSerializer):
class Meta:
model = Address
class ClientSerializer(serializers.ModelSerializer):
address = AddressSerializer()
class Meta:
model = Client
fields = ('id', 'email', 'address')
模型:
class A
我有三种型号:Transaction、Business和Location。它们的定义如下:
class Business(models.Model):
# Can have zero or more locations. A user can have many businesses.
name = models.CharField(max_length=200, validators=[MinLengthValidator(1)])
# ... and some other fields ...
class Location(models.Model):
我有一个模型,它的OneToOneField是这样的:
class Customer(models.Model):
"""A Class to represent a Customer in System """
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
其序列化程序如下所示:
class CustomerSerializer(serializers.ModelSerializer):
""
我是Python和Django的新手),我需要一些帮助。
我想做的事:
我有一个模型页面,当有人试图更新一个对象时,我需要添加一个自定义字段"message“。
为什么?因为我在建立一个复习系统。这个字段,只是对变化的一个解释。因此,这个字段不是链接到页面(而是链接到另一个模型PageRevision)
经过一些研究,我设法将这个字段添加到admin.py文件中的表单中,如下所示:
class PageAdminForm(forms.ModelForm):
# custom field not backed by database
message = forms.Cha
我开始使用DRF使用Django构建REST。我了解到,在定义模型类时,可以将默认验证应用于字段。
我需要知道,什么应该是一个很好的方法,以无视部分验证的领域。
让我们考虑以下CLass模型:
class Test(models.Model):
a = models.CharField("A", max_length=100)
b = models.TextField("B", blank=True, null=True)
c = models.TextField("C", null=True, blank=True)
我有一个这样的模型:
class A:
name = models.CharField()
group = models.ForeignKey('SomeModel', null=True, blank=True)
当我序列化这个字段时,我希望序列化程序根据'group‘字段是否为空白而具有不同的格式。当然,可以通过为不同格式设置不同的序列化程序并根据视图层的要求调用它们来实现这一点:
class TypeASerializer(serializers.ModelSerializer)
class Meta:
model = A
我正在写一个使用south的数据迁移...但是这个问题涉及到使用select_related来检索多对多字段。
文档指定可以使用ForeignKey ...将select_related用于具有关系的字段。我无法想象它不能与ManyToMany字段一起工作,对吧?
我的字段有blank=null,但是文档说你仍然可以调用select_related('field_name'),它会拉出相关的关系。然而,当我试图在下面这样做的时候...
其中listing是查询集中的一项
for listing in RealEstateListing.objects.all():
我正在使用python解析以逗号分隔的传入字符串。我想在之后对数据做一些计算。字符串的长度为: 800个字符,包含120个逗号分隔的字段。有120万个字符串需要处理。
for v in item.values():
l.extend(get_fields(v.split(',')))
#process l
get_fields使用operator.itemgetter()从120个字段中提取大约20个字段。
整个操作大约需要4-5分钟,不包括引入数据的时间。在程序的后面部分,我将这些行插入到sqlite内存表中以供进一步使用。但总体而言,仅解析和获取列表
如果我有一个嵌套的序列化程序:
class ChildSerializer(ModelSerializer):
class Meta:
fields = ('c_name', )
model = Child
class ParentSerializer(ModelSerializer):
child = ChildSerializer(many=True, read_only=True)
class Meta:
model = Parent
fields = ('p_name
我想跟踪哪个字段在任何模型上都发生了变化(即在模型级别上进行审计,因为它更具有原子性,而不是像django和django-reversion那样的管理/表单级别)。我可以使用预/后保存/删除信号对任何字段执行此操作。但是,我在m2m字段上这样做有一个问题。
对于下面的代码示例,我以用户更改的形式定义了“custom_groups”m2m字段,因为它是一个反向关系。例如,当用户将表单保存在管理界面上时,如果“custom_groups”字段有更改,我想记录一下。
模型:
from django.contrib.auth.models import User
class CustomGroup(
我遇到了鸡和蛋的情况。我有一个表单集,用户可以在其中修改现有的数据。实例不应直接保存,而是作为新对象添加。
for fm in attached_deals_formset:
if fm.has_changed():
modified_deal = fm.save(commit=False)
deal = Deal.objects.create(deal_id = modified_deal.deal_id, ... )
for item in modified_deal.sales_item: #m2m
我正在检查字段的值(比如short_text1 )在assosiative模型中是否等于1,然后我将填充LabelAdmin字段列表,以便在管理界面上显示字段short_text1,但是这似乎不起作用。我之所以使用get_object_or_404,是因为Assosiative模型中会有很多字段,我希望管理员只显示在Assosiative模型上检查为正确的字段。
admin.py
from django.shortcuts import get_object_or_404
from django.contrib import admin
from .models imp
我使用的是django-rest-framework,
有没有办法只在?field=X参数中指定字段时才显示该字段?如果我尝试这样做:
class TopLevelJobSerializer(DynamicFieldsMixin, serializers.ModelSerializer):
children_job_statuses = serializers.ReadOnlyField()
class Meta:
model = TopLevelJob # This inherits from Job, which has id, name
在将ManyToMany字段添加到ClaimDocument之后,我得到了这个错误:"<ClaimDocument: test>" needs to have a value for field "id" before this many-to-many relationship can be used.,但我的ClaimDocument模型中没有test字段。以下是我的代码:
models.py
class Document(models.Model):
created_date = models.DateTimeField(default
我的内容模型与标记模型具有多对多的关系。当我保存Content对象时,我希望动态添加关系。我正在用下面的方法来做这个。
# models.py
def tag_content(content_id):
obj = Content.objects.get(pk=content_id)
print obj # Checking
obj.tags = [1, 2, 3] # Adding the relationships using the Tag IDs
class Tag(models.Model):
name = models.CharField(m
考虑到具有两种多对多关系的下列模式: class Child(models.Model):
name = models.CharField(max_length=80)
class Foo(models.Model):
bar = models.ManyToManyField(Child)
baz = models.ManyToManyField(Child) 产生了错误: accounts.foo: Accessor for m2m field 'bar' clashes with related m2m field 'Child.foo_
我正在使用Django 1.6 (很快升级到1.8)、Python2.7和DRF 3.2.5 (很快升级到最新版本)。
我有一组深度嵌套的序列化器(~10个级别,总共有20-30个被序列化的模型)。我试图在上下文中添加一个布尔标志,这将决定序列化的输出层次结构将是详细的(包括所有模型的字段)还是基本的(仅部分字段)。
我编写了以下代码(部分代码段):
from rest_framework import serializers
from app.models import Institute, Department, Member
class MemberSerializer(seriali
我正在使用基于Django类的泛型视图。在我的models.py中,我有一个名为MyModel的模型,其中包含一个名为m2m的多到多字段。我有多组用户,他们可以编辑m2m字段。每一组用户只能查看并将他们的部分添加到字段中--使用get_form来设置他们在m2m字段中可以看到的内容。我遇到的问题是,当一个用户输入他的记录时,它将删除m2m字段中的初始记录。我需要从m2m字段中获取初始值,保存它们,然后在表单提交时将它们添加到新值中。这是我的views.py:
class MyModelUpdate(UpdateView):
model = MyModel
fields = [&