标签: django-orm

Django的ORM中ImageField的默认图像

我正在使用一个ImageField 在我的模型上存储个人资料图片.

如果没有定义图像,如何将其设置为返回默认图像?

django django-orm

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

通过Django中的模型保存多个到多个数据

我在从表单中保存多个字段时遇到问题.这是我的模特:

class TextIssue(models.Model):
    Issue = models.CharField(max_length=150, unique=True)

    def __unicode__(self):
        return self.Issue

class PadIssue(models.Model):
    Issue = models.CharField(max_length=150, unique=True)

    def __unicode__(self):
        return self.Issue   


class PHIssue(models.Model):
    Data = models.ForeignKey(Data)
    TextIssue = models.ManyToManyField(TextIssue, blank=True, null=True)
    PadIssue = models.ManyToManyField(PadIssue, blank=True, null=True)
    Notes = models.TextField()

    def clean(self):
        from django.core.exceptions import ValidationError
        if self.TextIssue is None and self.PadIssue is None:
            raise ValidationError('You must choose at least one issue category.')   

        if self.Notes is None:
            raise ValidationError('You must write a note regarding the issues selected above.')


class PHIssueForm(ModelForm):

    class …
Run Code Online (Sandbox Code Playgroud)

django django-forms django-orm

23
推荐指数
2
解决办法
3万
查看次数

Django:Order_by多个字段

我以列表的形式获得order_by字段.我想用django orm通过多个字段order_by.列表如下:

orderbyList = ['check-in','check-out','location']
Run Code Online (Sandbox Code Playgroud)

我写的查询是这样的:

modelclassinstance.objects.all().order_by(*orderbyList)
Run Code Online (Sandbox Code Playgroud)

我在列表中所期待的一切都是动态的.我没有预先设定的数据集.有人可以告诉我如何用这个写一个django ORM吗?

django django-orm

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

ManyToMany关系的问题在保存后不会立即更新

我遇到了ManytoMany关系的问题,当我保存它时(通过管理员)并没有在模型中更新,并尝试在附加到post_save信号的函数中或在save_model关联的函数内使用新值AdminModel.我试图通过使用带有id的get函数重新加载这些函数中的对象但它仍然具有旧值.

这是交易问题吗?交易结束时是否抛出信号?

谢谢,

django django-signals django-orm django-admin

22
推荐指数
3
解决办法
1万
查看次数

是否可以使用多个数据库和南方?

我目前的项目正在扩展地理位置,所以我正在尝试集成GeoDjango并为初学者导入一些shapefile.我的设置包括以下内容:

  1. MySQL 5.0作为'默认'数据库,以前是唯一的数据库.
  2. Spatialite作为'gis'数据库,只应用于从shapefile导入区域
  3. South 正在整个项目中使用

现在我已经在我的区域的新应用程序中创建了一个GeoDjango模型.像往常一样,我已经完成了./manage.py schemamigration --initial,当我尝试做的时候./manage.py migrate $my_new_app --database="gis",它失败了django.db.utils.DatabaseError: no such table: south_migrationhistory,这是我猜的正确,因为south_migrationhistory在我的主数据库中.

有没有人有这样的设置经验,可以帮助我吗?

编辑:我已经改变了标题,因为我意识到这个问题实际上不是GeoDjango特有的.

django django-orm django-south

22
推荐指数
4
解决办法
5740
查看次数

22
推荐指数
2
解决办法
7545
查看次数

Django什么时候查找外键的主键?

我有两个简单的模型,一个代表电影,另一个代表电影的评级.

class Movie(models.Model):
    id = models.AutoField(primary_key=True)

    title = models.TextField()

class Rating(models.Model):
    id = models.AutoField(primary_key=True)

    movie = models.ForeignKey(Movie)
    rating = models.FloatField()
Run Code Online (Sandbox Code Playgroud)

我的期望是,我能够首先创建一个Movie和一个Review引用该电影,然后将它们都提交到数据库,只要我提交了Movie第一个,以便给它一个主键供Review引用.

the_hobbit = Movie(title="The Hobbit")
my_rating = Rating(movie=the_hobbit, rating=8.5)
the_hobbit.save()
my_rating.save()
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,它仍然IntegrityError抱怨我正在尝试指定一个空外键,即使Movie已经提交并且现在有一个主键.

IntegrityError: null value in column "movie_id" violates not-null constraint
Run Code Online (Sandbox Code Playgroud)

我通过添加一些print声明来证实这一点:

print "the_hobbit.id =", the_hobbit.id           # None
print "my_rating.movie.id =", my_rating.movie.id # None
print "my_rating.movie_id =", my_rating.movie_id # None

the_hobbit.save()

print "the_hobbit.id =", the_hobbit.id           # …
Run Code Online (Sandbox Code Playgroud)

python django django-orm

22
推荐指数
3
解决办法
4781
查看次数

通过Django中的Relationship字段过滤多对多关系

我试图通过Class字段来过滤多对多关系.

引用Django文档,我将解释我的目标

class Person(models.Model):
      name = models.CharField(max_length=128)

      def __unicode__(self):
          return self.name

class Group(models.Model):
      name = models.CharField(max_length=128)
      members = models.ManyToManyField(Person, through='Membership')

      def __unicode__(self):
          return self.name

class Membership(models.Model):
      person = models.ForeignKey(Person)
      group = models.ForeignKey(Group)
      date_joined = models.DateField()
      invite_reason = models.CharField(max_length=64)
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我的目标应该是过滤多对多的关系,并且只获得从某个日期开始加入某个(date_joined字段).

可能吗?

django filtering django-orm

21
推荐指数
1
解决办法
9828
查看次数

Django Admin ManyToManyField

我做了一个模型(models.py):

class opetest(models.Model):
    name = models.CharField(max_length=200)
    author = models.ForeignKey(User, related_name='author')
    description = models.TextField(u'Test description', help_text = u'Some words about quiz')
    pub_date = models.DateTimeField('date published', blank=False)
    vacancies = models.ManyToManyField(Vacancy, blank=True)
    students = models.ManyToManyField(User, blank=True, related_name='opetests') #This field I want to edit on "User change page"
    estimate = models.IntegerField(default = 0, help_text = u'Estimate time in hours. \'0\' - unlimited')
Run Code Online (Sandbox Code Playgroud)

然后我尝试添加内联块以允许opetest在"更改用户"页面(admin.py)上进行分配:

class ProfileAdmin(UserAdmin):
    filter_horizontal = ('opetests',)

admin.site.unregister(User)
admin.site.register(User, ProfileAdmin)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

'ProfileAdmin.filter_horizontal' refers to field 'opetests' that is missing from model …
Run Code Online (Sandbox Code Playgroud)

django django-models django-orm django-admin manytomanyfield

20
推荐指数
1
解决办法
3万
查看次数

Django使用另一个表中的数据更新表

我有2个表productscatagories通过外键连接.我需要products.new_cost使用字段更新字段catagories.price_markup如下:

UPDATE products p
INNER JOIN categories c ON p.category_id = c.id
SET p.new_cost = ROUND(p.pleer_cost * (1 + c.price_markup/100), -1)
WHERE p.update = 1
Run Code Online (Sandbox Code Playgroud)

在SQL中它很容易,但是如何使用Django ORM呢?

我的简化尝试不起作用Cannot resolve keyword 'category.price_markup' into field.:

Product.actived.select_related('category').filter(update=1)).update(new_cost=F('pleer_cost') * F('category.price_markup'))
Run Code Online (Sandbox Code Playgroud)

django django-orm django-database

20
推荐指数
2
解决办法
7054
查看次数