标签: django-models

创建Django模型或更新(如果存在)

我想创建一个模型对象,比如Person,如果person的id不存在,或者我会得到那个person对象.

创建新人的代码如下:

class Person(models.Model):
    identifier = models.CharField(max_length = 10)
    name = models.CharField(max_length = 20)
    objects = PersonManager()

class PersonManager(models.Manager):
    def create_person(self, identifier):
        person = self.create(identifier = identifier)
        return person
Run Code Online (Sandbox Code Playgroud)

但我不知道在哪里检查并获取现有的人物对象.

python django django-models

102
推荐指数
4
解决办法
13万
查看次数

在Django中加载fixture时出现contenttypes的问题

由于内容类型冲突,我无法将Django fixtures加载到我的MySQL数据库中.首先,我尝试从我的应用程序转储数据,如下所示:

./manage.py dumpdata escola > fixture.json
Run Code Online (Sandbox Code Playgroud)

但我不断错过外键问题,因为我的应用程序"escola"使用其他应用程序中的表.我一直在添加额外的应用程序,直到我这样做:

./manage.py dumpdata contenttypes auth escola > fixture.json
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试将数据作为测试夹具加载时,问题是以下约束违规:

IntegrityError: (1062, "Duplicate entry 'escola-t23aluno' for key 2")
Run Code Online (Sandbox Code Playgroud)

似乎问题是Django正在尝试动态地重新创建具有与夹具中的主键值冲突的不同主键值的内容类型.这似乎与此处记录的错误相同:http://code.djangoproject.com/ticket/7052

问题是推荐的解决方法是转储我正在做的contenttypes应用程序!?是什么赋予了?如果它有所不同,我确实有一些自定义模型权限,如下所示:http://docs.djangoproject.com/en/dev/ref/models/options/#permissions

mysql django django-models fixtures mysql-error-1062

100
推荐指数
8
解决办法
4万
查看次数

排序查询集的好方法? - Django

我想要做的是这样的:

  • 得到30位作者得分最高(Author.objects.order_by('-score')[:30])

  • 命令作者 last_name


有什么建议?

python django django-models

100
推荐指数
3
解决办法
9万
查看次数

通过choices = ... name设置Django IntegerField

当您有一个带有选项选项的模型字段时,您往往会有一些与人类可读名称相关联的魔术值.在Django中是否有一种方便的方法来通过人类可读的名称而不是值来设置这些字段?

考虑这个模型:

class Thing(models.Model):
  PRIORITIES = (
    (0, 'Low'),
    (1, 'Normal'),
    (2, 'High'),
  )

  priority = models.IntegerField(default=0, choices=PRIORITIES)
Run Code Online (Sandbox Code Playgroud)

在某些时候,我们有一个Thing实例,我们想要设置它的优先级.显然你可以这样做,

thing.priority = 1
Run Code Online (Sandbox Code Playgroud)

但这迫使你记住PRIORITIES的Value-Name映射.这不起作用:

thing.priority = 'Normal' # Throws ValueError on .save()
Run Code Online (Sandbox Code Playgroud)

目前我有这个愚蠢的解决方法:

thing.priority = dict((key,value) for (value,key) in Thing.PRIORITIES)['Normal']
Run Code Online (Sandbox Code Playgroud)

但那很笨重.考虑到这种情况有多常见,我想知道是否有人有更好的解决方案.是否有一些字段方法按选项名称设置字段我完全忽略了?

python django django-models

99
推荐指数
7
解决办法
6万
查看次数

获取django模型的类名

我有一个django模型:

class Book(models.Model):
  [..]
Run Code Online (Sandbox Code Playgroud)

我希望将模型名称设为字符串:'Book'.当我试图这样做时:

Book.__class__.__name__
Run Code Online (Sandbox Code Playgroud)

它返回'ModelBase'.

任何的想法?

django django-models

98
推荐指数
6
解决办法
6万
查看次数

我可以在Django模型中使外键字段可选

我有这个代码

subject      = models.ForeignKey(subjects)
location     = models.ForeignKey(location)
publisher    =  models.ForeignKey(publisher)
Run Code Online (Sandbox Code Playgroud)

我不总是有三种价值观的书.所以有时如果我不知道主题或位置,或出版商.然后我想让它们空着

但如果我有,那么我需要选择框来选择.有可能吗?

django django-models

98
推荐指数
2
解决办法
5万
查看次数

Django:使用整数设置外键?

有没有办法使用模型的整数id设置外键关系?这将用于优化目的.

例如,假设我有一个Employee模型:

class Employee(models.Model):
  first_name = models.CharField(max_length=100)
  last_name = models.CharField(max_length=100)
  type = models.ForeignKey('EmployeeType')
Run Code Online (Sandbox Code Playgroud)

EmployeeType(models.Model):
  type = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)

我希望拥有无限制员工类型的灵活性,但在部署的应用程序中,可能只有一种类型,所以我想知道是否有办法对id进行硬编码并以这种方式设置关系.这样我就可以避免db调用来获取EmployeeType对象.

django optimization foreign-keys django-models

95
推荐指数
2
解决办法
4万
查看次数

Django - 如何创建文件并将其保存到模型的FileField?

这是我的模特.我想要做的是生成一个新文件,并在保存模型实例时覆盖现有文件:

class Kitten(models.Model):
    claw_size = ...
    license_file = models.FileField(blank=True, upload_to='license')

    def save(self, *args, **kwargs):
        #Generate a new license file overwriting any previous version
        #and update file path
        self.license_file = ???
        super(Request,self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

我看到很多关于如何上传文件的文档.但是如何生成文件,将其分配给模型字段并让Django将其存储在正确的位置?

python django django-models

93
推荐指数
3
解决办法
8万
查看次数

Django"xxxxxx对象"在管理员操作侧栏中显示自定义

我想更改管理员最近更改边栏显示添加的"对象"名称的默认行为.请参考下图:

在最近的actions模块中,它还将新对象显示为

我想更改这些在管理员中的命名方式.理想情况下,我希望能够将其从"MyModelName对象"更改为"策略"对象示例中的"策略:{{策略的"策略名称"字段的值.}}.

我以为__unicode__我的病人模型处理了这个问题,但似乎没有.任何帮助表示赞赏.

django django-models django-admin

93
推荐指数
5
解决办法
5万
查看次数

用于表示美元金额的最佳django模型字段是什么?

我需要在Django模型的字段中存储一美元金额.什么是最好的模型字段类型?我需要能够让用户输入这个值(通过错误检查,只需要一个精确到美分的数字),格式化输出给不同地方的用户,并用它来计算其他数字.

django django-models

92
推荐指数
4
解决办法
4万
查看次数