python – Django – 具有Single True的布尔字段
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Django – 具有Single True的布尔字段,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1323字,纯文字阅读大概需要2分钟。
内容图文
![python – Django – 具有Single True的布尔字段](/upload/InfoBanner/zyjiaocheng/771/152e21251f2a4df1b3b6191e52bfc84c.jpg)
我想要一个布尔字段,它只允许其中一个基于外键(用户)为True.我现在肯定如何说这个或者真正搜索它,但我能够得到一个简单的实现工作,但我不喜欢它.感觉笨拙和错误.无论如何,获得我的意思的最好方法是你看到它,你走了:
class MyModel(models.Model):
owner = models.ForeignKey(User)
_is_main = models.BooleanField(default=False)
def __get_is_main(self):
return self._is_main
def __set_is_main(self, is_main):
if (is_main):
active_keys = API_Key.objects.filter(_is_main=True, owner=self.owner)
if (len(active_keys) == 1 and self in active_keys):
return
else:
for key in active_keys:
if (key.is_main):
key.is_main = False
key.save()
self._is_main = is_main
self.save()
is_main = property(__get_is_main, __set_is_main)
我只希望每个所有者ONCE的is_main为True,不超过一次.这些是用于API密钥.因此,所有者可以拥有许多API密钥,但只有一个设置为主密钥.这是我弄清楚如何实现这一点的唯一方法.谁有更好的方法来做到这一点?如果重要,我正在使用MySQL.
解决方法:
也许你不需要那个字段但是有一个指向主键的单例.这些方面的东西:
class Key(models.Model):
owner = models.ForeignKey(User)
@property
def is_main(self):
return hasattr(self, 'is_main')
def set_main(self):
# update MainKey instance here
class MainKey(models.Model):
key = models.ForeignKey(Key, related_name='is_main')
def save(self, *args, **kwargs):
self.id = 1
super(MainKey, self).save(*args, **kwargs)
def delete(self, *args, **kwargs):
pass
内容总结
以上是互联网集市为您收集整理的python – Django – 具有Single True的布尔字段全部内容,希望文章能够帮你解决python – Django – 具有Single True的布尔字段所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。