** Для Swift 4 **
Я не уверен, насколько хорошо иметь файл констант в Swift, но вы можете создать что-то подобное:
enum TargetType:String, CaseIterable{
case target1 = "My Target 1"
case target 2 = "My Target 2"
case unknown
}
var currentTarget:TargetType = {
return TargetType(rawValue: (Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? "")) ?? .unknown
}()
Так что вы может вызвать его в любое время, как это
if currentTarget != .unknown{
print(currentTarget.rawValue)
}
Если вы хотите добавить переменную внутри класса Константы, то:
class Constants: NSObject {
static var currentTarget:TargetType = {
return TargetType(rawValue: (Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? "")) ?? .unknown
}()
}
Есть способ использовать объекты ModelAdmin для определения вашей собственной формы. Указав свою собственную форму, вы получите полный контроль над ее составом и проверкой.
Скажите, что модель, имеющая FK для пользователя
, - это Foo
.
Ваш myapp / models.py
может выглядеть так:
from django.db import models
from django.contrib.auth.models import User
class Foo(models.Model):
user = models.ForeignKey(User)
some_val = models.IntegerField()
Затем вы должны создать файл myapp / admin.py
, содержащий что-то вроде этого:
from django.contrib.auth.models import User
from django import forms
from django.contrib import admin
class FooAdminForm(forms.ModelForm):
user = forms.ModelChoiceField(queryset=User.objects.order_by('username'))
class Meta:
model = Foo
class FooAdmin(admin.ModelAdmin):
form = FooAdminForm
admin.site.register(Foo, FooAdmin)
Как только вы это сделаете, раскрывающееся меню
упорядочит пользовательские объекты по имени пользователя. Не нужно беспокоиться о других полях в Foo
... вам нужно только указать переопределения в вашем классе FooAdminForm
. К сожалению, ты
Приведенный выше ответ Джаррета должен на самом деле читать:
from django.contrib.auth.models import User
from django.contrib import admin
from django import forms
from yourapp.models import Foo
class FooAdminForm(forms.ModelForm):
class Meta:
model = Foo
def __init__(self, *args, **kwds):
super(FooAdminForm, self).__init__(*args, **kwds)
self.fields['user'].queryset = User.objects.order_by(...)
class FooAdmin(admin.ModelAdmin):
# other stuff here
form = FooAdminForm
admin.site.register(Foo, FooAdmin)
, поэтому набор запросов будет повторно оцениваться каждый раз, когда вы создаете форму, а не один раз, когда модуль, содержащий форму, импортируется.