我正在建立一个电子商务网站。我有一个产品型号,其中包含所有产品类型的通用信息:
class Product(models.Model):
name=models.CharField()
description=models.CharField()
categories = models.ManyToManyField(Category)
然后我有SimpleProduct和BundleProduct,它们有FK to Product,并保存特定于产品类型的信息。BundleProduct有一个指向其他产品的m2m字段。
class SimpleProduct(Product):
我正在向django应用程序添加功能,以添加带有M2M字段的链接到另一个(Job)的模型(Lot)。
问题:
我正在使用Django自动完成光在表单中添加这个模型(Lot),我希望这个字段也被输入和另一个自动完成字段(合同)过滤,这个字段是一个名为M2M字段的反向的对象:
关系:
{Lot}-在M2M上反向--{Job}--外键--{合同}
我试着在自动完成中筛选批量,只有那些订单上的合同键与表单中的字段匹配,我已经查阅了文档,并且我不确定是否有这样做,下面是我的最新尝试和相关代码。
models.py(仅用于关系的字段)
class Contract(Parent_model):
c
我正在使用基于Django类的泛型视图。在我的models.py中,我有一个名为MyModel的模型,其中包含一个名为m2m的多到多字段。我有多组用户,他们可以编辑m2m字段。每一组用户只能查看并将他们的部分添加到字段中--使用get_form来设置他们在m2m字段中可以看到的内容。我遇到的问题是,当一个用户输入他的记录时,它将删除m2m字段中的初始记录。我需要从m2m字段中获取初始值,保存它们,然后在表单提交时将它们添加到新值中。这是我的views.py:
class MyModelUpdate(UpdateView):
model = MyModel
fields = [&
我需要定义一个会议模式,其中包括一个组织者和一些参与者。所有参与者都是从auth模块中的标准用户派生出来的。
from django.db import models
from django.contrib.auth.models import User
class Meeting(models.Model):
organizer=models.ForeignKey(User)
participants=models.ManyToManyField(User)
但是,在运行syncdb时,I会得到以下错误
错误:一个或多个模型没有验证: hub.meeting:用于字段‘组
我有一个非常简单的数据模型,在视频和评论之间有一对多的关系
class Video(models.Model):
url = models.URLField(unique=True)
.....
class Comment(models.Model):
title = models.CharField(max_length=128)
video = models.ForeignKey('Video')
.....
我想查询视频并抓取整个对象图(带有所有评论的视频)。查看sql,我看到它做了两个选择,一个用于视频,另一个用于评论。
我想跟踪哪个字段在任何模型上都发生了变化(即在模型级别上进行审计,因为它更具有原子性,而不是像django和django-reversion那样的管理/表单级别)。我可以使用预/后保存/删除信号对任何字段执行此操作。但是,我在m2m字段上这样做有一个问题。
对于下面的代码示例,我以用户更改的形式定义了“custom_groups”m2m字段,因为它是一个反向关系。例如,当用户将表单保存在管理界面上时,如果“custom_groups”字段有更改,我想记录一下。
模型:
from django.contrib.auth.models import User
class CustomGroup(
假设我们的Django应用程序中有两个模型:
class Author(models.Model):
name = models.CharField()
class Book(models.Model):
name = models.CharField()
通常,对于多对多字段,我会创建一个中间表,然后查询:
class BookAuthor(models.Model):
book = models.ForeignKey(Book)
author = models.ForeignKey(Author)
从那时起,我可以简单地通过book或author查询Boo
在Django中,我有两个模型之间的多对多关系。
我想从多个model_two实例中删除一个model_one实例。
我有:
user = User.objects.get(id=user_id)
conversations = Conversation.objects.filter(users=user)
for conversation in conversations.iterator():
conversation.users.remove(user)
这需要评估对话的每个实例。有没有办法在没有迭代的情况下做到这一点?
更新:
添加了模型以使问题更加清晰。
class User
当字段的名称存储在变量中时,我希望能够更新模型上的多到多字段。对于普通字段(构造函数中有kwargs ),甚至是外键,这是相对容易的,但是对于多到多的字段则不是这样。情况如下:
class Book(models.Model):
title = models.CharField(max_length=30)
authors = models.ManyToManyField(Author)
field_name = 'title'
new = Book(**{field_name:'My Book'}) # This sets title to
我想通过一个帖子的最大数量的标签来订购文章。
我的模特:
class post(models.Model):
description = models.Charfield(max_length = 2000)
class tag(models.Model):
t = models.Charfield(max_length = 100)
class tags(models.Model):
tag = models.ForeignKey(tag, ...)
post = models.ForeignKey(post,...)
我知道django的orm支持很多领域
我正在尝试将M2M字段修改为ForeignKey字段。当我运行syncdb时,命令validate没有显示任何问题:
ValueError: Cannot alter field xxx into yyy they are not compatible types (you cannot alter to or from M2M fields, or add or remove through= on M2M fields)
所以我不能进行迁移。
class InstituteStaff(Person):
user = models.OneToOneFi
因此,我试图运行一个查询,但无法使它正常工作。我已经成功地编写了一个SQL查询,它完成了我正在寻找的任务,但是我很难将它移到Django ORM中。
作为一个sidenote:即使SQL查询完成了我正在寻找的内容,我也不确定它是否是创建这样一个查询的最佳方法。因此,为了完整起见,我将重新创建类似的情况,所以请告诉我是否有更好的方法来创建这样的SQL查询(然后可能是将其转换为Django ORM代码的更容易的方法)。
想象一个非常简单的电影数据库:
class ReleaseType(models.Model):
name = models.CharField(max_length=25
这是我的模型的样子:
class QuestionTagM2M(models.Model):
tag = models.ForeignKey('Tag')
question = models.ForeignKey('Question')
date_added = models.DateTimeField(auto_now_add=True)
class Tag(models.Model):
description = models.CharField(max_length=100, unique=True)
class Que
我正在使用Django的ManyToManyField,当我试图向它添加数据时,我得到了以下错误:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/purav/Desktop/socmov/fbcon/models.py", line 165, in getMovieInfo
movie.genre.add( G )
File "/usr/local/lib/python2.6/dist-p
我创建了一个直通模型,以便向m2m字段中添加一个order字段,但是我在通过下面的def ()自动递增订单字段时遇到了问题。当我添加一个对象时,我得到TypeError不支持的操作数类型为+:'dict‘和'int’,我不知道为什么。有什么想法吗?
models.py:
class Playlist(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
name = models.CharField(max_length=50)
tracks = mode
用Django 1.5编写博客引擎,并使用Django管理。一切都很好,直到我向模型添加了一个ManyToManyField,并将该字段添加到ModelAdmin的字段集中,然后我开始在加载管理页面时得到这个神秘的错误:
'NoneType' object has no attribute 'user'
(下面是完整的堆栈跟踪。)为什么响应对象突然变成零?如果我把字段从字段集中移除,一切都会好起来的。
我的模型看起来有点像这样(很多字段被移除):
class Tag(models.Model):
name = models.CharField(max_l
我试图在django的postgres db模型中添加标记,我找到了两个解决方案:
使用外键:
class Post(models.Model):
tags = models.ManyToManyField('tags')
...
class Tag(models.Model):
name = models.CharField(max_length=140)
使用数组字段:
from django.contrib.postgres.fields import ArrayField
class Post(models.Model):
tags