使用Django命令行工具检查并查询自定义模型
嘿,我来帮你梳理下怎么用Django命令行查询你创建的这两个模型~
首先先把你给出的模型代码补全并格式化(假设Widget的inventory字段是整数类型,做了合理补全):
from django.db import models class Finish(models.Model): name = models.CharField(max_length=255, blank=False, unique=True) date_created = models.DateTimeField(auto_now_add=True) date_modified = models.DateTimeField(auto_now=True) def __str__(self): return "{}".format(self.name) class Widget(models.Model): name = models.CharField(max_length=255, blank=False, unique=True) inventory = models.IntegerField(default=0) # 补全合理的字段定义 date_created = models.DateTimeField(auto_now_add=True) date_modified = models.DateTimeField(auto_now=True) def __str__(self): return self.name
接下来咱们一步步用Django命令行做查询操作:
1. 进入Django交互式Shell
打开终端,切换到你的Django项目根目录,运行:
python manage.py shell
2. 导入你的模型
记得把yourapp替换成你实际的应用名称:
from yourapp.models import Finish, Widget
3. 常用查询示例
获取所有实例
# 获取所有Finish记录 all_finishes = Finish.objects.all() # 打印所有Finish名称 for finish in all_finishes: print(finish.name) # 获取所有Widget记录 all_widgets = Widget.objects.all()
过滤特定条件的实例
# 获取名称为"Matte Black"的Finish(替换成你实际的名称) specific_finish = Finish.objects.get(name="Matte Black") # 获取库存大于10的Widget low_stock_widgets = Widget.objects.filter(inventory__gt=10) # 获取名称包含"Widget"的记录(不区分大小写的模糊查询) matching_widgets = Widget.objects.filter(name__icontains="Widget")
创建新实例
# 创建一个新的Finish new_finish = Finish.objects.create(name="Gloss White") # 创建一个新的Widget new_widget = Widget.objects.create(name="Basic Widget", inventory=50)
更新实例
# 先找到要更新的实例 widget_to_update = Widget.objects.get(name="Basic Widget") # 更新库存数值 widget_to_update.inventory = 30 # 保存更改到数据库 widget_to_update.save()
删除实例
# 删除指定的Finish finish_to_delete = Finish.objects.get(name="Gloss White") finish_to_delete.delete()
如果之后你给Widget和Finish加上关联(比如外键),还能做关联查询,举个例子:
# 假设Widget新增外键字段:finish = models.ForeignKey(Finish, on_delete=models.CASCADE) # 获取属于"Matte Black"的所有Widget widgets_for_finish = Widget.objects.filter(finish__name="Matte Black")
内容的提问来源于stack exchange,提问作者goterpsgo
相关产品推荐
相关产品推荐

