2017-10-08 34 views
0

私は3つのテーブルを持っていますが、1つはmandal、village、Propertyです。プロパティテーブルにはマンダールと村が外部キーでリンクされています。マンダール、その特定の村の結果のみがdjango管理者のプロパティのフォームで表示する必要があります。私はマンダールと村を結びつけました。外部キーの情報を取得する方法

#models.py 
from django.db import models 
from django.utils import timezone 

class Mandal(models.Model): 
    id = models.AutoField(
     primary_key=True, 
     db_column="Mandal_id", 
     verbose_name="Mandal Id", 
    ) 
    name = models.CharField(
     max_length=200, 
     db_column="Mandal_Name", 
     verbose_name="Mandal Name", 
     null=False, 
     blank=False, 
     help_text="Enter Mandal names only", 
     default=None, 
    ) 
    class Meta: 
     db_table = "Mandal" 
     verbose_name_plural = "Mandal" 

    def __str__(self): 
     return self.name 

class Village(models.Model): 
    id = models.AutoField(
     primary_key=True, 
     db_column="Village_id", 
     verbose_name="Village Id", 
    ) 
    name = models.CharField(
     max_length=200, 
     db_column="Village_Name", 
     verbose_name="Village Name", 
     null=False, 
     blank=False, 
     help_text="Enter village names only", 
     default=None, 
    ) 
    mandal_id = models.ForeignKey(
     Mandal, 
     db_column="Mandal_id", 
     verbose_name="Mandal Name", 
    ) 

    class Meta: 
     db_table = "Village" 
     verbose_name_plural="Village" 

    def __str__(self): 
     return self.name 

class Properties(models.Model): 
    id = models.BigAutoField(
     primary_key=True, 
     db_column="Property_id", 
     verbose_name="Property Id" 
    ) 
    created_on = models.DateField(
     auto_now=False, 
     auto_now_add=False, 
     default=timezone.now(), 
    ) 
    area = models.BigIntegerField(
     default=0, 
     db_column="Property_Area", 
     verbose_name="Property Area", 
     help_text="Please enter area in square feet", 
     validators=[], 
    ) 
    mandal_location = models.ForeignKey(
     Mandal, 
     db_column="Mandal_id", 
     verbose_name="Mandal Name", 
     default=None, 
    ) 
    village_location = models.ForeignKey(
     Village, 
     db_column="Village_id", 
     verbose_name="Village Name", 
     default=None, 
    ) 

    description = models.TextField(
     default=None, 
     db_column="Property_description", 
     verbose_name="Property Description", 
    ) 
    features = models.CharField(
     default=None, 
     db_column="Property_Features", 
     verbose_name="Property Features", 
     null=True, 
     blank=True, 
     help_text="Add Property Fetures", 
     max_length=1000, 
    ) 
    additional_features = models.CharField(
     default=None, 
     db_column="Property_Additional_Features", 
     verbose_name="Additional Features", 
     null=True, 
     blank=True, 
     help_text="Add Property Fetures", 
     max_length=1000 
    ) 

    class Meta: 
     db_table = "Properties" 
     verbose_name_plural = "Property" 

    def __str__(self): 
     return "Pr-{i}".format(i=self.id) 

#admin.py 
from django.contrib import admin 
from whiteindia.models import Mandal,Village,Properties 

class MandalAdmin(admin.ModelAdmin): 
    list_display = ['id','name'] 

    class Meta: 
     model = Mandal 

class VillageAdmin(admin.ModelAdmin): 
    list_display = ['id','name','mandal_id'] 
    list_filter = ['mandal_id'] 

    class Meta: 
     model = Village 

class PropertiesAdmin(admin.ModelAdmin): 
    list_display = ['id', 'area','village_location','mandal_location'] 

    class Meta: 
     model = Properties 

admin.site.register(Mandal,MandalAdmin) 
admin.site.register(Village,VillageAdmin) 
admin.site.register(Properties,PropertiesAdmin) 

、どのように我々は、ブラウザウィンドウで管理者/プロパティを入力すると、管理者でプロパティ内の特定のマーンダルに

答えて

0

を村のリストを得るために、私はあなたがあなたのデータを表示するために欠けているか、非常によく分からないけどあなたはinlineModelAdminを見ましたか?

adminインターフェイスには、親モデルと同じページのモデルを編集する機能があります。これらはインラインと呼ばれます。

これを使用して管理ページのレコードを編集します。このページには、編集可能な別のテーブルの子レコードも表示されます。あなたはそれを編集するためにそれをクリックするためにそれを使用することができるかもしれません、そして、プロパティの下の編集ページで、それに関連するすべてのマンダールまたは村を示すことができます。 3つのテーブルをリンクする場合は、 'through'オプションを使用してテーブルをリンクできます。でドキュメントをチェックアウト:

モデルで

https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin

+0

- プロパティ、私はマーンダル選択した場合、私は特定のマーンダルに関連付けられた村のリストを取得する必要があります。 –

+0

あなたのプロパティリストは、外部キーを介して義務的な場所を示しています。このキーをクリックして別の村のリストを表示する場合は、レコードの主キーを取得して別のビューに渡す必要があります。これには、管理クラスのいくつかを上書きまたはサブクラス化する必要があります。これを行うには、管理セクションのカスタマイズに関するドキュメントをチェックアウトする必要があります。別の方法として、インラインでプロパティのmadalsのリストを表示することができ、おそらくマンダールの村のリストを 'through'オプションを使って表示することができます。あなたのアプリをどのように見せるかによって異なります。 – cander

関連する問題