Tag: django orm

为什么要通过一个耗费大量内存的大型Django QuerySet进行迭代?

问题表中包含大约一千万行。 for event in Event.objects.all(): print event 这导致内存使用量稳步增加到4 GB左右,在这一点上行快速打印。 第一行打印之前的漫长的延迟令我感到惊讶 – 我期望它几乎立即打印。 我也尝试了Event.objects.iterator() ,其行为方式相同。 我不明白什么Django加载到内存或为什么这样做。 我期望Django在数据库级别迭代结果,这意味着结果将以大致恒定的速率打印(而不是在长时间的等待之后立即打印)。 我误解了什么? (我不知道它是否相关,但是我正在使用PostgreSQL。)

如何解决在Django中跨数据库缺less外键支持的问题

我知道Django不支持跨多个数据库的外键 (原来是Django 1.3文档) 但是我正在寻找解决方法。 什么都行不通 我有两个模型,每个在一个单独的数据库。 routers.py: class NewsRouter(object): def db_for_read(self, model, **hints): if model._meta.app_label == 'news_app': return 'news_db' return None def db_for_write(self, model, **hints): if model._meta.app_label == 'news_app': return 'news_db' return None def allow_relation(self, obj1, obj2, **hints): if obj1._meta.app_label == 'news_app' or obj2._meta.app_label == 'news_app': return True return None def allow_syncdb(self, db, model): if […]

Django自引用外键

一般来说,我对web应用程序和数据库的东西很陌生,所以这可能是一个愚蠢的问题。 我想创build一个模型(“CategoryModel”),该模型指向模型的另一个实例(其父)的主ID。 class CategoryModel(models.Model): parentId = models.ForeignKey(CategoryModel) 我该怎么做呢? 谢谢!

如何在django queryset中执行OR条件?

我想写一个相当于这个SQL查询的Django查询: SELECT * from user where income >= 5000 or income is NULL. 如何构buildDjagno查询集filter? User.objects.filter(income__gte=5000, income=0) 这不起作用,因为它是filter。 我想ORfilter来获得单个查询集的联合。

如何创build一个Django模型与多到多领域的对象?

我的模型 – > class Sample(models.Model): users = models.ManyToManyField(User) 我想这样做(在这个模型中保存用户,user1和user2) – > user1 = User.objects.get(pk=1) user2 = User.objects.get(pk=2) sample_object = Sample( users = user1, users=user2 ) sample_object.save() 我知道这是错误的:D,但我相信你得到了我想要做的事情…那么你会怎么做呢?

在Django中链接多个filter(),这是一个错误?

我总是认为在Django中链接多个filter()调用总是和在一次调用中收集它们一样。 # Equivalent Model.objects.filter(foo=1).filter(bar=2) Model.objects.filter(foo=1,bar=2) 但我已经在我的代码中运行了一个复杂的查询集,但事实并非如此 class Inventory(models.Model): book = models.ForeignKey(Book) class Profile(models.Model): user = models.OneToOneField(auth.models.User) vacation = models.BooleanField() country = models.CharField(max_length=30) # Not Equivalent! Book.objects.filter(inventory__user__profile__vacation=False).filter(inventory__user__profile__country='BR') Book.objects.filter(inventory__user__profile__vacation=False, inventory__user__profile__country='BR') 生成的SQL是 SELECT "library_book"."id", "library_book"."asin", "library_book"."added", "library_book"."updated" FROM "library_book" INNER JOIN "library_inventory" ON ("library_book"."id" = "library_inventory"."book_id") INNER JOIN "auth_user" ON ("library_inventory"."user_id" = "auth_user"."id") INNER JOIN "library_profile" ON ("auth_user"."id" […]

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

我遇到了ManytoMany Relationships问题,当我保存模型(通过pipe理员)时,在模型中没有更新,尝试在附加到post_save信号的函数内或关联的AdminModel的save_model内使用新值。 我试图重新加载这些函数中的对象,通过使用与ID ..的function,但它仍然有旧值。 这是交易问题吗? 交易结束时是否有信号出现? 谢谢,

在Django REST框架中优化数据库查询

我有以下型号: class User(models.Model): name = models.Charfield() email = models.EmailField() class Friendship(models.Model): from_friend = models.ForeignKey(User) to_friend = models.ForeignKey(User) 那些模型用在下面的视图和序列化器中: class GetAllUsers(generics.ListAPIView): authentication_classes = (SessionAuthentication, TokenAuthentication) permission_classes = (permissions.IsAuthenticated,) serializer_class = GetAllUsersSerializer model = User def get_queryset(self): return User.objects.all() class GetAllUsersSerializer(serializers.ModelSerializer): is_friend_already = serializers.SerializerMethodField('get_is_friend_already') class Meta: model = User fields = ('id', 'name', 'email', 'is_friend_already',) def get_is_friend_already(self, […]

Django的Orm,如何查看(或logging)执行的查询?

有没有办法可以打印Django ORM正在生成的查询? 说我执行以下语句: Model.objects.filter(name='test') 我怎样才能看到生成的SQL查询?