У меня есть модель, которая по существу представляет собой одну таблицу с четырьмя таблицами поиска. Одна из таблиц поиска - это указать тип. Исходя из типа (которого четыре), требования к полям изменяются. Например, если типом является «Опрос», требуется поле number_of_unique_contacts, но не для какого-либо другого типа.Как проверить модель в каркасе отдыха django?
Я рассмотрел использование нескольких таблиц и шаблона БД на основе моделирования наследования. Но это не имеет смысла, поскольку существует только четыре типа, и только 6 полей находятся в игре как «контекстуально требуемые», зависящие от типа. При этом я был бы открыт для нескольких моделей внутри Django, но я предпочитаю, чтобы REST-инфраструктура представляла только один URI (не один из TYPE).
Вопрос в том, что является наилучшим способом проверки модели на запросы POST/PUT? Мне лучше выбрать другую схему базы данных (как уже упоминалось, я думаю, что у меня есть то, что мне нравится)? Должна ли реструктурировать мою модель python (опять же один основной класс с четырьмя поисками)?
Я новичок в Django и python, поэтому, пожалуйста, будьте нежны (фон .NET/Java). И заблаговременно спасибо
Что я думаю о соответствующем коде (честно говоря, код, вероятно, не имеет значения, так как это скорее вопрос дизайна, но я всегда чувствую странную публикацию без кода - в аренду для контекста)
class MySerializer(serializers.ModelSerializer):
proposal_side = serializers.SlugRelatedField(many=False, read_only=False, slug_field='proposal_side')
my_proposal_type = serializers.SlugRelatedField(many=False, read_only=False, slug_field='proposal_type')
my_proposal_delivery_type = serializers.SlugRelatedField(many=False, read_only=False, slug_field='delivery_type')
my_survey_method = serializers.SlugRelatedField(many=False, read_only=False, slug_field='method')
class Meta:
model = diliModels.Proposal
fields = (
'id'
,'my_proposal_side'
,'my_proposal_type'
,'number_of_participants'
,'cost_per_participants'
,'minimum_dollar_commitment'
,'commercial_terms'
,'is_publicly_visible'
,'is_anonymous'
,'is_republish'
,'name'
,'my_delivery_type'
,'my_survey_method'
,'number_of_unique_contacts'
,'availability_start'
,'availability_end'
,'location_country'
,'location_city'
,'location_state'
,'description'
,'desired_meetings'
)
class MyViewSet(viewsets.ModelViewSet):
paginate_by = 100
queryset = myModels\
.MyProposal\
.objects\
.prefetch_related('blah')
print 'SQL::MyViewSet: ' + str(queryset.query)
serializer_class = serializers.MySerializer