- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
class Model1(models.Model):
username = models.CharField(max_length=100,null=False,blank=False,unique=True)
password = models.CharField(max_length=100,null=False,blank=False)
class Model2(models.Model):
name = models.ForeignKey(Model1, null=True)
unique_str = models.CharField(max_length=50,null=False,blank=False,unique=True)
city = models.CharField(max_length=100,null=False,blank=False)
class Meta:
unique_together = (('name', 'unique_str'),)
我已经通过 django-admin 页面在 Model1 中填写了 3 个示例用户名密码
在我看来,我得到的这个列表是
userlist = Model1.objects.all()
#print userlist[0].username, userlist[0].password
for user in userlist:
#here I want to get or create model2 object by uniqueness defined in meta class.
#I mean unique_str can belong to multiple user so I'm making name and str together as a unique key but I dont know how to use it here with get_or_create method.
#right now (without using unique_together) I'm doing this (but I dont know if this by default include unique_together functionality )
a,b = Model2.objects.get_or_create(unique_str='f3h6y67')
a.name = user
a.city = "acity"
a.save()
最佳答案
我认为您的意思是,您的逻辑键是 name
和 unique_together
的组合,并且您可以使用它作为调用的基础get_or_create()
。
首先,了解unique_together
创建数据库约束。无法使用它,并且 Django 不会对这些信息执行任何特殊操作。
此外,目前 Django 无法使用复合自然主键,因此默认情况下您的模型将具有自动递增整数主键。但您仍然可以使用 name
和 unique_str
作为键。
看看你的代码,你似乎想这样做:
a, _ = Model2.objects.get_or_create(unique_str='f3h6y67',
name=user.username)
a.city = 'acity'
a.save()
在 Django 1.7 上,您可以使用 update_or_create()
:
a, _ = Model2.objects.update_or_create(unique_str='f3h6y67',
name=user.username,
defaults={'city': 'acity'})
无论哪种情况,关键点是 _or_create
的关键字参数用于查找对象,而 defaults
用于在这种情况下提供附加数据创建或更新的。请参阅the documentation .
总而言之,要“使用”unique_together
约束,只要您想要唯一地指定一个实例,您只需将这两个字段一起使用即可。
关于python - 如何在 django View 中使用 unique_together 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23770190/
我想用呈现 GenericForeignKey 字段的模型来概括我的工作流程。 所以我创建了父类 GFKModel: class GFKModel(models.Model): target_
在此: class Administrator(models.Model): user = models.OneToOneField(User, primary_key=True) a
我有两个模型:Common 和 ARecord。 ARecord 与 Common 有外键关系。我想通过 ARecord 和 Common 的项目组合来确保 ARecord 是独一无二的。 class
当尝试在两个外键约束上使用 unique_together 时,出现以下错误: CommandError: System check identified some issues: ERRORS: m
目前我有三个模型: class Tutorial(models.Model): title = models.CharField(max_length=100) description
我正在致力于通过 Django Rest Framework 在移动应用 API 中实现 Like/Unlike 功能。 所以我有以下模型: class PlaylistLikes(models.Mo
当我定义一个模型并在 Meta 中使用 unique_together 时,我可以定义多个元组。这些是要进行 OR 运算还是 AND 运算?也就是说,我有一个模型,其中 class MyModel(m
我的代码中两个字段条目唯一性检查存在问题。 我使用 unique_together 定义了一个模型来检查每个用户字段记录的唯一性,但它接受该用户添加的重复条目。 模型.py from django.d
有没有办法过滤 django 模型,其中两个字段在一起是唯一的? 例如,我有这个模型: class Sequence(models.Model): id = models.Char
我无法让 Django (1.5) 在 3 列上创建 MySQL UNIQUE 索引,尽管我已经遵循了在 SO 上找到的所有建议。我的模型如下所示: class Loc(models.Model):
我有以下内容: class AccountAdmin(models.Model): account = models.ForeignKey(Account) is_master = m
我需要检查 unique_together 只有在两个字段都提供给管理员创建 Form 或通过 API 请求两个 create 和 update 调用。如果发生这种情况并且字段不是 unique_to
我有一个带有 unique_together 的模型定义为 3 个字段一起唯一: class MyModel(models.Model): clid = models.AutoField(pr
我显然不明白如何正确地做到这一点,有人可以让我直截了当。这是模型: class Team(models.Model): teamID=models.CharField(max_length=25
在 Django 中使用 GenericForeign Relations 时,我不确定是我做错了还是在处理唯一约束时出现了一些问题。 当我尝试保存对象时(例如在 Admin 中),我从数据库中收到唯
我看到一些人在我之前遇到过这个问题,但是在旧版本的 Django 上,我在 1.2.1 上运行。 我有一个看起来像的模型: class Category(models.Model): objects
这是我尝试使用广义自然键模型管理器的尝试。类似于the docs,不同之处在于它尝试(未成功)从Meta.unique_together属性确定自然键字段名称。 class NaturalKeyMod
unique_together 不起作用,它只在第一个字段上设置唯一约束并忽略第二个字段。有什么办法可以强制执行唯一约束吗? class BaseModel(models.Model): id
我有以下模型: class LocationPoint(models.Model): latitude = models.DecimalField(max_digits=9, decimal_
我在字段之间使用了unique_together,经过一段时间和新的要求,我决定要删除它,因此我从模型定义中删除了它,但似乎仍然会引起“重复输入”问题。 我是否必须在数据库上放一些约束?在这种情况下,
我是一名优秀的程序员,十分优秀!