Переименовать поля модели в сериализаторе и форме - Django - PullRequest
0 голосов
/ 18 февраля 2019

Я хочу изменить имена полей.В моей модели название поля начинается с префикса timesheet.И когда я использую api, я должен использовать этот префикс timesheet.Вместо этого я хочу удалить этот префикс: jobs, clock_in_date, clock_out_date .... Как я могу переименовывать имена полей, чтобы при отправке данных из тела API-интерфейса они содержали имена без префикса расписания

class TimesheetSerializer(serializers.ModelSerializer):

    timesheet_hours = TimesheetHourSerializer(many=True, read_only=True)

    class Meta:
        model = TimesheetEntry
        fields = [
            'id',
            'timesheet_jobs',
            'timesheet_clock_in_date',
            'timesheet_clock_in_time',
            'timesheet_clock_out_date',
            'timesheet_clock_out_time',
            'timesheet_note',
            'timesheet_hours',
        ]

Models.py

class TimesheetEntry(models.Model):
    timesheet_users = models.ForeignKey(User, on_delete=models.CASCADE,related_name='timesheet_users')
    timesheet_jobs = models.ForeignKey(Jobs, on_delete=models.CASCADE,related_name='timesheet_jobs', blank=True, null=True)
    timesheet_clock_in_date = models.DateField()
    timesheet_clock_in_time = models.TimeField()
    timesheet_clock_on = models.DateTimeField(auto_now_add=True)
    timesheet_clock_in_by = models.ForeignKey(User, on_delete=models.CASCADE,related_name='timesheet_user_clock_in_by')
    timesheet_clock_out_date = models.DateField(blank=True, null=True)
    timesheet_clock_out_time = models.TimeField(blank=True, null=True)

1 Ответ

0 голосов
/ 18 февраля 2019
class TimesheetSerializer(serializers.ModelSerializer):
    timesheet_hours = TimesheetHourSerializer(many=True, read_only=True)
    jobs = serializers.CharField(source='timesheet_jobs')

    class Meta:
        model = TimesheetEntry
        fields = [
            'id',
            'jobs',
            .......
        ]

Вы можете просто использовать это.Это будет работать для операций записи также

...