ID、number、およびtypeというプロパティを持つ「Product」というクラス モデルがあります。
class Product(models.Model):
PRODUCT_TYPES = (
('CW', 'Casement Window'),
('BA', 'Bunny Advance'),
('EW', 'Enterprise Wadoo'),
('T3', 'Type 3')
)
number = models.CharField(max_length=50)
type = models.CharField(max_length = 2 , choices=PRODUCT_TYPES)
ID、番号、およびproduct_idによる「製品」へのリンクというプロパティを持つ「プロジェクト」と呼ばれるクラスモデルがあります。
class Project(models.Model):
number = models.CharField(max_length=50)
product = models.ForeignKey(Product)
ここがややこしいところです: 私はクリスピー フォームとオートコンプリートを使用して値を表示および編集します。オートコンプリートは、プロジェクト モデルの値に基づいています。したがって、製品のタイプの適切性を表示および編集するには、プロジェクト モデルに適切なタイプを追加する必要があります。
質問:
models.ForeignKey を通常のフィールドに使用することは可能ですか? そのような :
type = models.ForeignKey(Product,related_name='type')
ループを使用してすべての製品を反復処理し、ID を比較しようとしましたが、次のメッセージが表示されました:「'ModelBase' オブジェクトは反復可能ではありません」
def test(id_product): for p in Product: if p.number == id_product: return p.type
編集:可能な限り、プロジェクト内の製品の TYPE にアクセスできるようにする必要があります。