Thank you so much. I will give that go.

On Wednesday, January 17, 2018 at 4:48:24 PM UTC+1, Matemática A3K wrote:
>
>
>
> On Wed, Jan 17, 2018 at 11:53 AM, Tony <[email protected] <javascript:>
> > wrote:
>
>> I would like to let users either upload a video file(to AWS S3) or 
>> provide an URL to a video, e.g. Youtube/Vimeo.
>>
>>
>> I found a similar question for Rails: Rails: upload a file OR store a url 
>> <https://stackoverflow.com/questions/13547724/rails-upload-a-file-or-store-a-url>
>>
>>
>>
>> <https://stackoverflow.com/questions/13547724/rails-upload-a-file-or-store-a-url>
>>
>> But how do I do that in Django(1.11)?
>>
>>
>> Should I create 2 separate models, or model inheritance with abstract 
>> model, let users choose what they want to do in the frontend, then display 
>> the appropriate form?
>>
>> class VideoModel(models.Model):
>>     title = models.CharField(max_length=200)
>>     post_by = models.OneToOneField(settings.AUTH_USER_MODEL)
>>     created = models.DateTimeField(auto_now_add=True)
>>     modified = models.DateTimeField(auto_now=True)
>>
>>         class Meta:
>>             abstract = True
>> class VideoFile(VideoModel):
>>     video = models.FileField(upload_to='uploads/')
>> class Videolink(VideoModel):
>>     URL = URLField(max_length=200)
>>
>>  
>
>> Would it be better if there is only 1 model with both a FileField and 
>> URLField.
>>
> IMO, yes, indeed 
>
>> They are both set to blank = true. Put a message on the page, saying 
>> either upload a file or provide a Youtube link. In the backend, check the 
>> request.POST whether one of these fields is filled in, if not, render the 
>> form again with an error message.
>>
> class VideoModel(models.Model):
>     title = models.CharField(max_length=200)
>     post_by = models.OneToOneField(settings.AUTH_USER_MODEL)
>     created = models.DateTimeField(auto_now_add=True)
>     modified = models.DateTimeField(auto_now=True)    video = 
> models.FileField(upload_to='uploads/', blank=True, null=True)
>     url = URLField(max_length=200, blank=True, null=True)
>
>     def clean(self):
>
>         super().clean()
>
>         if not self.url and not self.video:
>
>              raise(ValidationError({"url": "Both url and video can't be 
> null"})
>
>      def get_video_url(self):
>
>          return(url if self.url else self.video.url)
>
>  
>  This is a way of doing it. If you use a ModelForm, then it will show the 
> error message automatically. You can add some javascript for showing only 
> the one that was chosen. You should have for convenience a function or 
> method that return the url for the video independently of the source.
>
>>
>> Which one is better to handle such situation? Or they are equally 
>> horrible? I couldn't think of a third option.
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/django-users.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-users/31186b81-e108-47f9-8594-a140dcad3097%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/django-users/31186b81-e108-47f9-8594-a140dcad3097%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/04d21929-59cb-4c18-b8ae-118cc92aaa4c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to