3
모델에 대해 반성하고 모든 일반적인 일반 관계를 나열하고자합니다.django-contenttypes - 모델에 대한 모든 일반 관계 나열
내 모델은 다음과 같습니다
class Service(models.Model):
host = models.ForeignKey(Host)
statuses = generic.GenericRelation(Status)
상태 객체는 다음과 같습니다
class Status(TrackedModel):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey()
class Meta:
verbose_name_plural = 'statuses'
내가 프로그래밍 방식 statuses
이 서비스 모델에 대한 일반적인 관계는 것을 배우고 싶습니다. 이것이 가능한가? Status._meta.fields
은 statuses
을 표시하지 않지만 Status._meta.get_all_field_names()
은 표시하며 다른 불필요한 것만 표시합니다.
나는 이것이 가능한 해결책일지도 모른다고 생각했지만, 나에게는 정말 지저분 해 보입니다. 나는 더 나은 것을 듣고 싶다.
from django.db.models.fields import FieldDoesNotExist
from django.contrib.contenttypes import generic
generic_relations = []
for field_name in Service._meta.get_all_field_names():
try:
field = Service._meta.get_field(field_name)
except FieldDoesNotExist:
continue
if isinstance(field, generic.GenericRelation):
generic_relations.append(field)
고마워요!
그냥 감사합니다. –
이것은 1.5에서는 작동했지만 1.6에서는 더 이상 작동하지 않습니다. 우리는 필드를 get_field_by_name을 사용하여 얻을 수는 있지만 get_field는 사용할 수 없으므로 아마 버그 일 것입니다. –
이것은 슬프게도 구식입니다. 지금은'Service._meta.virtual_fields'에서만 사용할 수있는 것으로 보입니다. – marr75