2016-02-02 198 views
0

在我的django管理員中,我有一些外鍵,我總是可以添加和編輯這些字段,但有時候我也可以刪除它們。Django管理員刪除外鍵圖標

附上圖片顯示Kategorie hoteluWojewodztwo有這個小紅叉,其中Galeria zdjecMiasto沒有它。

這是爲什麼?我怎樣才能將這個小紅叉加到我的Galeria zdjec

Django admin panel

而且,這裏要求管理員

-*- coding: utf-8 -*- 
from django.contrib.gis import admin 
from django.contrib.gis.geos import Point 
from django.utils.safestring import mark_safe 
from hotels.models import HotelCategory, Hotel, DescriptionInlines 
from django.utils import timezone 
from django_select2.forms import Select2Widget 
from django import forms 
from image_cropping.widgets import ImageCropWidget 


class StackedinlineForm(forms.ModelForm): 
    class Meta: 
     model = DescriptionInlines 
     fields = '__all__' 


class HotelAdminForm(forms.ModelForm): 
    class Meta: 
     model = Hotel 
     fields = '__all__' 
     widgets = { 
      'city': Select2Widget, 
      'gallery': Select2Widget, 
      'main_image': ImageCropWidget, 
      'logotype': ImageCropWidget 
     } 

    def clean(self): 
     premium_status = self.data.get('premium_status', None) 
     display_on_main_page = self.data.get('display_on_main_page', None) 

     if display_on_main_page and not premium_status: 
      raise forms.ValidationError(
       (mark_safe(u"Nie można wyświetlać hotelu na stronie głównej, który nie jest hotelem premium.")) 
      ) 


class DescriptionInlinesAdmin(admin.StackedInline): 
    form = StackedinlineForm 
    model = DescriptionInlines 
    extra = 1 

    suit_classes = 'suit-tab suit-tab-cities' 


pnt = Point(20.00, 52.00, srid=4326) 
pnt.transform(3857) 


class HotelAdmin(admin.OSMGeoAdmin): 
    form = HotelAdminForm 
    default_zoom = 6 
    default_lon, default_lat = pnt.coords 
    list_display = ['name', 'city', 'street_and_number', 'tv_status', 'wifi_status', 'spa_status', 
        'beach_status', 'breakfast_status', 'pool_status', 'premium_status', 'is_active', 
        'display_on_main_page', 
        ] 
    list_filter = ['city', 'stars', 'tv_status', 'wifi_status', 'spa_status', 'beach_status', 'breakfast_status', 
        'pool_status', 'premium_status', 'display_on_main_page', 
        ] 
    search_fields = ['name'] 
    readonly_fields = ['visits', 'visits_unique'] 

    inlines = (DescriptionInlinesAdmin,) 

    filter_horizontal = ['tags', ] 
    exclude = ('slug',) 

    suit_form_tabs = (
     ('general', u'Dane podstawowe'), ('cities', u'Dodatkowe opisy'), ('main_page', u'Obróbka zdjęć'), 
    ) 

    fieldsets = [ 
     (None, { 
      'classes': ('suit-tab', 'suit-tab-general',), 
      'fields': ['name', 'old_slug', 'display_on_main_page', 'main_image', 'logotype', 'stars', 'gallery', 'video', 
         'categories', 'voivodeship', 'city', 'postcode', 'street_and_number', 'phone', 'email', 
         'webpage', 'description', 'price_starting_at', 'booking_com_url', 'tv_status', 'wifi_status', 
         'spa_status', 'beach_status', 'breakfast_status', 'pool_status', 'premium_status', 
         'premium_end_date', 'distance_to_city', 'facebook_url', 'twitter_url', 'ok_url', 'vk_url', 
         'location', 'latitude', 'longitude', 'tags', 'visits_unique', ] 
     }), 
     (None, { 
      'classes': ('suit-tab', 'suit-tab-main_page',), 
      'fields': ['col4', ] 
     }), 
    ] 

    def is_active(self, obj): 
     if not obj.premium_status: 
      return None 
     else: 
      if obj.premium_end_date: 
       if obj.premium_end_date >= timezone.now(): 
        return True 
       else: 
        return False 
      else: 
       return False 

    is_active.short_description = u'Aktywny hotel premium' 
    is_active.boolean = True 

    class Media: 
     css = { 
      'all': ('/statics/css/select2.min.css',) 
     } 
     js = ('/statics/js/hotel_admin_select2.js',) 


admin.site.register(HotelCategory) 
admin.site.register(Hotel, HotelAdmin) 
+0

你可以發表你的AdminModel類? –

+0

我已添加我的代碼 – sebb

+1

請問您可以告訴我什麼Galeria zdjec和Miasto字段在模型中命名,與Wojewodztwo相同。還請檢查您的模型的on_delete屬性?每個on_delete屬性是什麼? –

回答

0

on_delete=models.SET_NULL

曾爲