我有一個 Django 專案,其中一家餐廳有訂單和桌子。您可以在模型下方看到:
class Order(models.Model):
STATUS_CHOICES = (
("in_progress", "In_progress"),
('completed', 'Completed')
)
table = models.ForeignKey(Table, on_delete=models.CASCADE, blank=False, null=False, related_name='order_table')
user = models.ForeignKey(User, on_delete=models.CASCADE, blank=False, null=False, related_name='order_user')
status = models.CharField(choices=STATUS_CHOICES, null=True, max_length=15)
如果表仍在進行中,我應該限制創建新訂單。我想它應該通過序列化程式完成,但不知道驗證以及如何將請求與資料庫資訊連接起來
當前序列化器(標準):
class OrdersModelSerializer(ModelSerializer):
class Meta:
model = Order
fields = "__all__"
目前來看:
class OrdersFilter(filters.FilterSet):
class Meta:
model = Order
fields = (
'user', 'table__id', 'status',
)
class OrdersModelViewSet(ModelViewSet):
queryset = Order.objects.all()
serializer_class = OrdersModelSerializer
pagination_class = LimitOffsetPagination
filter_backends = (DjangoFilterBackend, OrderingFilter)
filter_class = OrdersFilter
ordering_fields = ('table', 'user', 'status')
uj5u.com熱心網友回復:
您可以指定排除有withqueryset=…的s 的:PrimaryKeyRelatedFieldTableOrderstatus='in_progress'
from rest_framework import serializers
class OrdersModelSerializer(ModelSerializer):
table = serializers.PrimaryKeyRelatedField(
queryset=Table.objects.exclude(order_table__status='in_progress')
)
class Meta:
model = Order
fields = '__all__'
注意:通常使用
settings.AUTH_USER_MODEL[Django-doc]參考用戶模型比直接使用User模型 [Django-doc]更好。有關更多資訊,您可以查看檔案的參考User模型部分。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/435517.html
上一篇:React表單驗證問題
