최근에는 Django 1.4.3 (Python 2.7)을 사용 해왔고 동적으로로드 할 수 있도록 모델 필드가 필요했습니다. 기본적으로 어딘가에서 가능한 선택 옵션을 등록 할 가능성이 필요했습니다. Django 모델의 동적 선택
먼저 나는 생각했다 :을 Baah, 그것은 거 쉬울거야.
models.py
class CategoryModels: def __init__(self): self.category_models = [ ['dummy', 'dummy'] ] def register(self, model, label=None): if label == None: label = model.split('.').pop() self.category_models.append([model, label]) def get_models(self): return self.category_models category_models = CategoryModels() class Category(models.Model): MODEL_CHOICES = category_models.get_models() name = models.CharField(blank=False, unique=True, max_length=30) model = models.CharField(blank=False, max_length=30, choices=MODEL_CHOICES)
: 파이썬은 여기
나를 위해 일한 조각입니다 ... 그것은 그 잘 갔다하지 않습니다
참조 목록을 통과 admin.py
import app
app.models.category_models.register('app.models.Entity')
app.models.category_models.register('app.models.OtherModel')
작동하지만 ... 목록에 일부 '더미'항목이 들어 있습니다. 이상한 부분은 '더미'항목이 없어도 작동하지 않습니다 (일반 입력 필드 만 얻음). 나는 이미이 주제에 대한 연구를했고 게으른 로딩 등으로 다른 솔루션을 찾았습니다. 하지만이 중 가장 쉬운 방법 인 것 같습니다. 난 왜 '더미'항목없이 작동하지 않는지 궁금해? 왜 선택은 공백입니까? 이 파이썬이나 장고 메커니즘을 함께 할 수있는 뭔가가 있나요
def get_models(self):
return self.category_models.reverse()
: 그것은 또한 당신이 그런 짓을하면 나누기? 그런 행동에 대한 설명을 찾고 있습니다.
감사합니다. ForeignKey 필드를 사용
는
"깨지다"는 것은 무엇을 의미합니까? 우리에게 완전한 파이썬 오류를주십시오. – rantanplan
일반 입력 필드 만 있습니다. 선택 매개 변수가 비어있는 경우와 같습니다. –
reverse()는 None을 반환하므로, reverse 예제에는 버그가 있습니다. "return reversed (self.category_models.reverse())" –