python - 如何在不同的表中搜索 slug 并将项目添加到 orderItem 表中的一对多字段 Django?
问题描述
我想使用ForeignKey在OrderItem项目字段中添加不同的产品表,这次slug只在一个表 gamespc 中搜索并在OrderItem项目字段中只添加游戏 PC,它应该搜索我所有的产品表,并将产品添加到OrderItem使用ForeignKey的模型。
模型.py
class OrderItem(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
ordered = models.BooleanField(default=False)
item = models.ForeignKey(
gamingpc, on_delete=models.CASCADE, blank=True, null=True)
product = models.ForeignKey(
PcComponent, on_delete=models.CASCADE, blank=True, null=True)
视图.py
def post(self, request, *args, **kwargs):
slug = request.data.get('slug')
variations = request.data.get('variations', [])
if slug is None:
return Response({"message": "Invalid request"}, status=HTTP_400_BAD_REQUEST)
item = get_object_or_404(gamingpc, slug=slug)
解决方案
将您的模型更改为:
class OrderItem(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
content_object = GenericForeignKey()
object_id = models.CharField(max_length=100, null=True, blank=True)
content_type = models.ForeignKey(
ContentType, on_delete=models.CASCADE, null=True, blank=True,
limit_choices_to=(models.Q(model__in=['PcComponent', 'gamingpc']))
并查看:
def post(self, request, *args, **kwargs):
slug = request.data.get('slug')
variations = request.data.get('variations', [])
if slug is None:
return Response({"message": "Invalid request"}, status=HTTP_400_BAD_REQUEST)
item = get_object_or_404(gamingpc, slug=slug)
order_item = OrderItem.objects.create(user=request.user, object_id=item.pk, content_type=ContentType.objects.get(model='gamingpc'))
...
...
推荐阅读
- c++ - 尝试创建可变参数 C++ 输入函数
- python - Heroku,由于 bash 导致运行 django 应用程序出现问题:ps:scale: command not found
- javascript - jQuery:使用 setInterval() 淡入和淡出 html 音频
- git - Git 分支和分叉问题 - 冲突
- python - 删除 Cogs 中的默认帮助命令并替换新的自定义命令。不和谐.py
- javascript - 如何编写与 Webpack Encore 兼容的 jQuery 插件
- reactjs - 在 React 打字稿中将状态设置为对象/大数据对象的动态数组
- android - Android 应用程序,导航视图时的最佳实践
- text - 有没有办法在没有额外库的情况下使用 LuaJIT 和 SDL2 将文本打印到屏幕上?
- header - 如何设置推荐人策略