我正在使用 Django 和 rest_framework 從現有資料庫(這意味著它不是更改 de DB 架構的選項)做一個 API。我有 2 張桌子,Foos 和 Bars。
foo_id
1
2
bar_id | foo_id (FK)
1 |1
2 |2
Bars 模型:
foo = models.ForeignKey('Foos', on_delete=models.CASCADE)
Django 模型僅將 de 'foo_id' FK 更改為 'foo'。有一種方法可以讓 FK 帶有 '_id' 后綴?
uj5u.com熱心網友回復:
您可以在序列化程式中執行此操作:
from rest_framework import serializers
class BarSerializer(serializers.ModelSerializer):
foo_id = serializers.PrimaryKeyRelatedField(source='foo')
class Meta:
model = Bar
fields = ['foo_id']
甚至簡單地說:
from rest_framework import serializers
class BarSerializer(serializers.ModelSerializer):
class Meta:
model = Bar
fields = ['foo_id']
foo_id然而,給模型欄位命名是沒有意義的:如果你訪問bar_object.foo,你會得到一個Foo物件,而不是物件的 id Foo,所以命名它foo_id是誤導性的。
uj5u.com熱心網友回復:
我建議指定要用作 FK 的欄位(在您的情況下為 foos_id)。
models.ForeignKey(
Foos,
on_delete=models.CASCADE,
to_field='id'
)
uj5u.com熱心網友回復:
固定使用:
foo_id = models.ForeignKey('Foos', on_delete=models.CASCADE, db_column='foo_id')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/529156.html
標籤:djangodjango模型django-rest-framework
